Tôi có một vài hộp văn bản và tập hợp các nút radio trong WPF. Tôi muốn sử dụng kích hoạt để thiết lập thuộc tính IsChecked của một nút radio có một tên nếu có bất kỳ hộp văn bản nào được lấy nét. Tôi kiểm tra một vài ví dụ nhưng tôi không thể tìm thấy những gì tôi đang tìm kiếm. Hãy nhớ rằng, chúng tôi đang sử dụng mẫu MVVM và không có mã phía sau.Trình kích hoạt có tên mục tiêu
Tôi đã thử các mã sau và có lỗi biên dịch này:
tài sản TargetName không thể được đặt trên một Setter Phong cách
<UserControl.Resources>
<Style x:Name="myTest" TargetType="TextBox">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="RadioButton.IsChecked" Value="True" TargetName="myRadioButton"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
Tôi đọc các bài viết khác và DataTrigger khắc phục vấn đề.
<Style x:Name="myTest2" TargetType="RadioButton" >
<Style.Triggers>
<DataTrigger Binding="{Binding IsFocused, ElementName=myTextBox}" Value="True">
<Setter Property="IsChecked" Value="True" ></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Nó sẽ giúp ích tôi bạn có thể chỉ cho chúng ta ít nhất mã XAML;) –
Từ MSDN 'Bạn có thể đặt khách sạn này đến tên của bất kỳ yếu tố trong phạm vi nơi thu setter (bộ sưu tập mà setter này là một phần của) được áp dụng. Đây thường là một phần tử được đặt tên nằm trong khuôn mẫu chứa setter này.' TargetName chủ yếu được sử dụng trong các mẫu điều khiển và không chỉ đơn giản là trong các kiểu như bạn đang cố gắng sử dụng nó. –
Bất kỳ ai khác chỉ liên tục gặp phải vấn đề này tại giao điểm của trình kích hoạt, kiểu và mẫu của WPF? Không thể sử dụng TargetName trong trình thiết lập Kiểu. Bộ sưu tập kích hoạt chỉ có thể có EventTriggers, trừ khi nó trong một Style. Rất tiếc, kiểm soát đó chỉ hoạt động trong mẫu kiểm soát, không phải mẫu dữ liệu ... – user1454265