3
我有一個自定義的UserControl,它有一個類型爲「DataTemplate」的DependencyProperty「ItemTemplate」。我通過.LoadContent()創建這個ItemTemplate的一個實例,分配.DataContext並將其放到ContentControl中。我唯一的缺點是DataTemplate.Triggers沒有被解僱。DataTemplate,LoadContent和DataTriggers沒有觸發
例XAML代碼:
<Window.Resources>
<DataTemplate x:Key="MyTemplate">
<Label Name="MyLabel" Content="Default"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="1">
<Setter TargetName="MyLabel" Property="Content" Value="True" />
</DataTrigger>
<DataTrigger Binding="{Binding}" Value="0">
<Setter TargetName="MyLabel" Property="Content" Value="False" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</Window.Resources>
<ContentControl x:Name="MyContent" />
示例代碼背後:
private void Window_Loaded(object sender, RoutedEventArgs e) {
var template = FindResource("MyTemplate") as DataTemplate;
var instance = template.LoadContent() as FrameworkElement;
instance.DataContext = "1";
MyContent.Content = instance;
}
輸出爲 「默認值」。
ListBox中使用相同的DataTemplate正常工作:
<ListBox x:Name="MyListBox" ItemTemplate="{StaticResource MyTemplate}" />
代碼背後:
MyListBox.ItemsSource = new[] { "1", "0" };
輸出爲 「真」 與 「假」。
任何想法如何觸發DataTemplate.Triggers?我是否需要手動循環所有觸發器並執行它們?如果是,我如何評估觸發器?
由於提前,
基督教
是的,這確實起作用(一個小類型,你的意思是MyContent.Content =「1」(或「0」))。謝謝! – 2009-08-16 10:03:21
是的,固定式 - 謝謝。 – 2009-08-16 10:24:36