条件笔划矩形WPF

  • 本文关键字:WPF 条件 c# wpf xaml
  • 更新时间 :
  • 英文 :


如果某个条件成立,我将尝试给矩形一个笔划/边界。不幸的是,在谷歌上搜索了几个小时后,我无法做到这一点。我知道我可以在矩形上设置Stroke属性,甚至可以绑定颜色。但是,我希望矩形只有一个基于布尔值的笔划。你会在下面找到我的代码:

<ItemsControl ItemsSource="{Binding Squares}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Rectangle Width="{Binding Width,  Converter={StaticResource PositionConverter}}" Height="{Binding Height,  Converter={StaticResource PositionConverter}}" Fill="{Binding Color}">
<Rectangle.RenderTransform>
<TranslateTransform X="{Binding GalleryX, Converter={StaticResource PositionConverter}}" Y="{Binding GalleryY, Converter={StaticResource PositionConverter}}"/>
</Rectangle.RenderTransform>
</Rectangle>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>

我试着使用DataTemplate。例如触发器。虽然以下几行确实进行了编译,但它们并不是解决方案。

<DataTemplate>
<Rectangle x:Name="rect" Width="{Binding Width,  Converter={StaticResource PositionConverter}}" Height="{Binding Height,  Converter={StaticResource PositionConverter}}" Fill="{Binding Color}">
<Rectangle.RenderTransform>
<TranslateTransform X="{Binding GalleryX, Converter={StaticResource PositionConverter}}" Y="{Binding GalleryY, Converter={StaticResource PositionConverter}}"/>
</Rectangle.RenderTransform>
</Rectangle>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsVisited}">
<Setter TargetName="rect" Property="Stroke" Value="Black"></Setter>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>

我希望你能帮我找到解决办法。如果IsVisited属性为true,我希望在itemsControl中的每个矩形上都有一个黑色笔划。

您必须添加一个DataTriggerValue,如下所示:

<DataTrigger Binding="{Binding IsVisited}" Value="True">

多亏了oz shalom,我找到了解决方案。我采用了以下格式:

<DataTemplate>
<Rectangle Width="{Binding Width,  Converter={StaticResource PositionConverter}}" Height="{Binding Height,  Converter={StaticResource PositionConverter}}" Fill="{Binding Color}">
<Rectangle.RenderTransform>
<TranslateTransform X="{Binding GalleryX, Converter={StaticResource PositionConverter}}" Y="{Binding GalleryY, Converter={StaticResource PositionConverter}}"/>
</Rectangle.RenderTransform>
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsVisited}" Value="True">
<Setter Property="Stroke" Value="Black"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
</DataTemplate>

我的问题帖子中以前的格式也适用。问题是我忘记了绑定的IsVisted属性的RaisePropertyChanged()

最新更新