Wpf 带有按钮列的Datagrid。如何绑定按钮';s IsEnabled属性是否为另一列的值? 多斯塔夫
对于每一行,如果Column1包含“No”,我希望该按钮被禁用,如果它包含任何其他内容,则该按钮被启用 以上是我在XAML上失败的尝试-intellisense告诉我Wpf 带有按钮列的Datagrid。如何绑定按钮';s IsEnabled属性是否为另一列的值? 多斯塔夫,wpf,data-binding,Wpf,Data Binding,对于每一行,如果Column1包含“No”,我希望该按钮被禁用,如果它包含任何其他内容,则该按钮被启用 以上是我在XAML上失败的尝试-intellisense告诉我 <DataGrid x:Name="myDataGrid" AutoGenerateColumns="False"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding myColum
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding myColumnName}" Header="Should Button In Second Column Be Enabled" IsReadOnly="True"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button>
<Button.Style>
<Style>
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGridRow}}, Path=myColumnName}" Value="No">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
DoStuff
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
将Xaml更改为这种方式
<Setter Property="IsEnabled"
感谢您的澄清。好像我偏离了轨道。在进一步的实验之后,我意识到我的问题是因为我认为我可以在DataTemplate中设置按钮的样式,就像我在表单上设置按钮的样式一样。尝试使用示例代码仍然会引起与我在问题中列出的相同的编译器问题。它抱怨内容被多次设置,Setter不是样式的有效属性。然而,一旦我创建了DataTemplate.Resources标记并移动了带有TargetType按钮的样式,它就能够正确地解析它了。
<DataGrid x:Name="myDataGrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding myColumnName}" Header="Should Button In Second Column Be Enabled" IsReadOnly="True"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button>
<Button.Style>
<Style>
<Setter Property="IsEnabled" Value="True"/>
<Style.Triggers>
<DataTrigger Binding="{Binding myColumnName}" Value="No">
<Setter Property="IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>