Я пытаюсь заставить триггер IsMouseOver работать на datatemplate. По какой-то причине он не стреляет. Я также попробовал http://www.wpfmentor.com/2009/01/how-to-debug-triggers-using-trigger.html, но я ничего не вижу в трассировке. Вот код: заWPF: триггер IsMouseOver не работает для datatemplate
<Window x:Class="FirstSImpleDataApp.Window4"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window4" Height="300" Width="300">
<Window.Resources>
<ResourceDictionary>
<DataTemplate x:Key="tmptemplate">
<Border x:Name="brd" BorderBrush="Black" BorderThickness="2">
<TextBlock x:Name="txt">my text box</TextBlock>
</Border>
<DataTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="txt" Property="Background" Value="Red"></Setter>
<Setter TargetName="txt" Property="Foreground" Value="Green"></Setter>
<Setter TargetName="brd" Property="Background" Value="Green"></Setter>
</Trigger>
</DataTemplate.Triggers>
</DataTemplate>
</ResourceDictionary>
</Window.Resources>
<Canvas x:Name="can" Loaded="can_Loaded">
</Canvas>
</Window>
Код::
XAML
public partial class Window4 : Window
{
public Window4()
{
InitializeComponent();
}
private void can_Loaded(object sender, RoutedEventArgs e)
{
var tmp = this.TryFindResource("tmptemplate") as DataTemplate;
var obj = (FrameworkElement)tmp.LoadContent();
can.Children.Add(obj);
}
}
Любая помощь приветствуется!
Ну просто попробовал это с помощью простой кнопки (ее ContentTemplate установлен на этот шаблон), поведение немного отличается, что может и не быть тем, чего хочет OP. Триггер запускается только при наведении курсора на внутреннюю границу, чтобы граница не растягивалась, чтобы заполнить кнопку. Поэтому, если OP хочет, чтобы парящая кнопка запускала триггер, это, конечно, не работает по желанию, если не может быть какой-то настройки для него. –
Пробовал это, но не работает. – May
@Mike, я не могу это сделать в xaml, потому что в реальном проекте я создаю много этих объектов и размещаю их на холсте. И они динамичны, поэтому мне нужно создать их в xaml. – May