WPF DataTrigger

我正在制作一个棋盘游戏以控制
WPF,我在整个晚上尝试让这部分工作后陷入困境.

以下代码属于’House’用户控件,可以在设计器上正常工作.我可以选择’house’对象并更改属性网格上的HouseType属性并查看所需的效果.但在运行时,如果我更改相同的属性,没有任何反应!

<DrawingBrush x:Key="emptyHouseBrush">
  <DrawingBrush.Drawing>
    <GeometryDrawing Geometry="M0,0 100,100 M0,100 100,0">
      <GeometryDrawing.Pen>
        <Pen Brush="Black" />
      </GeometryDrawing.Pen>
    </GeometryDrawing>
  </DrawingBrush.Drawing>
</DrawingBrush>

<DataTemplate DataType="{x:Type m:House}">
  <Border x:Name="border" BorderThickness="2"  >
    <Grid x:Name="grid" >

    </Grid>
  </Border>      
  <DataTemplate.Triggers>
    <DataTrigger Binding="{Binding Path=HouseType}" Value="Neutral">
      <Setter TargetName="border" Property="BorderBrush" Value="Black"/>
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=HouseType}" Value="Forbidden">
      <Setter TargetName="border" Property="BorderBrush" Value="Black"/>
      <Setter TargetName="grid" Property="Background" Value="{StaticResource ResourceKey=emptyHouseBrush}"/>
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=HouseType}" Value="Borders">
      <Setter TargetName="border" Property="BorderBrush" Value="#FF7A6D34"/>
    </DataTrigger>
    <DataTrigger Binding="{Binding Path=HouseType}" Value="Homeland">
      <Setter TargetName="border" Property="BorderBrush" Value="#FFFFD200"/>
      <Setter TargetName="border" Property="Background" Value="#54FBE681"/>
    </DataTrigger>

    <Trigger SourceName="border" Property="IsMouseOver" Value="True">
      <Setter TargetName="border" Property="Background" Value="#645CAEF9"/>
    </Trigger>

  </DataTemplate.Triggers>
</DataTemplate>


</Control.Resources>
  <ContentControl>
    <m:House x:Name="house" HouseType="Neutral"></m:House>
  </ContentControl>

</UserControl>

我尝试使用默认属性,依赖属性,实现IPropertyChanged接口,尝试将属性移动到控件并重复上述所有…仍然没有.

我错过了什么?更改此属性后,如何让控件更新边框(和背景)?

提前致谢.

马塞洛

最佳答案 代码似乎对我好.

一个很好的方法来寻找这些错误是一个我发现非常棒的小程序:Snoop.

http://snoopwpf.codeplex.com/Thread/View.aspx?ThreadId=207711

看看它,也许你将能够追踪你的错误.

{请享用}

点赞