Dav*_*ard 10 wpf binding triggers
我有一个datatemplate包含一个图像,如果ViewModel中的属性值为true,我想隐藏该图像.任何人都可以告诉我为什么下面的xaml不起作用?
<Image x:Name="img" Source="..\Images\List_16.png" Margin="0,0,5,0">
<Image.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding CurrentListHasPendingChanges}" Value="True">
<Setter Property="Image.Visibility" Value="Hidden" />
</DataTrigger>
<DataTrigger Binding="{Binding CurrentListHasPendingChanges}" Value="False">
<Setter Property="Image.Visibility" Value="Visible" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
Run Code Online (Sandbox Code Playgroud)
尝试从Property ="Image.Visibility"中删除"图像"部分,这样您就可以:
<Setter Property="Visibility" Value="Hidden"/>
Run Code Online (Sandbox Code Playgroud)
并将TargetType添加到您的Style:
<Style TargetType="{x:Type Image}">
Run Code Online (Sandbox Code Playgroud)
我只是使用 ContentControl 做了类似的事情。
<ContentControl Content="{Binding CurrentListHasPendingChanges}">
<ContentControl.ContentTemplate>
<DataTemplate>
<Image x:Name="img" Source="..\Images\List_16.png" Margin="0,0,5,0" Visibility="Hidden" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding}" Value="False">
<Setter Property="Image.Visibility" Value="Visible" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>
Run Code Online (Sandbox Code Playgroud)
不是吗
<Setter Property="Visibility" Value="Hidden" />
Run Code Online (Sandbox Code Playgroud)
?
我假设您使用 INotifyProptyChanged。
编辑我做了一些谷歌搜索,我认为你需要使用某种模板才能使触发器工作。
例如:http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/ae2dbfb7-5dd6-4352-bfa1-53634289329d
http://www.thejoyofcode.com/Help_Why_cant_I_use_DataTriggers_with_controls_in_WPF.aspx
归档时间: |
|
查看次数: |
42529 次 |
最近记录: |