WPF触发器绑定到MVVM属性

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)

Sta*_*zev 6

尝试从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)


a_h*_*din 5

我只是使用 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)

来自http://karlhulme.wordpress.com/2007/03/06/using-a-contentcontrol-and-datatemplate-to-indicate-new-andor-modified-data/


Nat*_*ium 3

不是吗

<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