嗨,我在 WPF 中有一个数据网格。 列是一个按钮,绑定到 int 值。 我希望将按钮内容路径绑定到 window.resource 路径,例如,当值为 0 时,按钮内容显示路径 RightArrow,当值为 1 时,它显示 LeftArrow。 我该怎么做? 我必须使用IvalueConverter来执行此操作吗? 以下是我的 xaml 代码。
<Window.Resources>
<Path x:Key="RightArrow" Data="M4,15V9H12V4.16L19.84,12L12,19.84V15H4Z" Fill="Black" />
<Path x:Key="LeftArrow" Data="M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z" Fill="Black" />
</Window.Resources>
<DataGrid Name="SomeDtg" >
<DataGridTemplateColumn Header="Interchangeble?" Width = "2*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate >
<Button>
.......
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
路径是一个控件。不要将控件创建为资源;他们一次只能有一个父母。您没有提供列绑定到的属性的名称,所以我将其命名为EvenOddProperty
。
执行此操作的另一种方法是创建两个显示向左或向右箭头的 DataTemplates,并将其与触发器交换。这就是将控件创建为资源的方式:将其放入作为资源的数据模板中。每次应用数据模板内容时,都会创建数据模板内容的新实例。
<Window.Resources>
<PathGeometry x:Key="RightArrow">M4,15V9H12V4.16L19.84,12L12,19.84V15H4Z</PathGeometry>
<PathGeometry x:Key="LeftArrow">M20,10V14H11L14.5,17.5L12.08,19.92L4.16,12L12.08,4.08L14.5,6.5L11,10H20Z</PathGeometry>
</Window.Resources>
。
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button>
<Path
Fill="Black"
>
<Path.Style>
<Style TargetType="Path">
<Style.Triggers>
<DataTrigger Binding="{Binding EvenOddProperty}" Value="0">
<Setter Property="Data" Value="{StaticResource RightArrow}" />
</DataTrigger>
<DataTrigger Binding="{Binding EvenOddProperty}" Value="1">
<Setter Property="Data" Value="{StaticResource LeftArrow}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>