如果某个条件成立,我将尝试给矩形一个笔划/边界。不幸的是,在谷歌上搜索了几个小时后,我无法做到这一点。我知道我可以在矩形上设置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()
。