Mam kilka pól tekstowych i zbiór przycisków radiowych w WPF. Chcę użyć wyzwalacza, aby ustawić właściwość IsChecked dla jednego przycisku radiowego, który ma nazwę, jeśli pola tekstowe zostaną skupione. Sprawdzam kilka przykładów, ale nie mogłem znaleźć tego, czego szukałem. Pamiętaj, że używamy wzorca MVVM i nie mamy kodu.Trigger z nazwą celu
Próbowałem następujące kody i mają ten błąd kompilacji:
nieruchomość nazwa_obiektu_docelowego nie może być ustawiony na setera Style
<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>
czytałem inne posty i DataTrigger rozwiązać problem.
<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>
Byłoby pomocne i można pokazać nam co najmniej kod XAML;) –
Od MSDN 'Można ustawić tę właściwość do nazwy każdego elementu w ramach gdzie kolekcji setter (kolekcji, które ten seter jest częścią) jest stosowany. Zazwyczaj jest to nazwany element, który znajduje się w szablonie, który zawiera to ustawienie. " Nazwa celu jest najczęściej używana w szablonach kontrolnych, a nie tylko w stylach, które próbujesz z niego korzystać. –
Ktoś jeszcze ma ciągle taki problem na przecięciu wyzwalaczy WPF, stylów i szablonów? Nie można użyć TargetName w seterie stylu. Kolekcja wyzwalaczy może mieć tylko EventTriggers, chyba że jest w stylu. Ups, ta kontrola działa tylko w szablonie kontrolnym, a nie w szablonie danych ... – user1454265