【发布时间】:2012-07-31 19:42:19
【问题描述】:
我需要禁用一行中的特定单元格,具体取决于同一行其他单元格中的值。
WPF 或 WPF MVVM 方案,欢迎使用这两种解决方案。
我都试过了,都不行!!!
【问题讨论】:
标签: wpf mvvm xamdatagrid
我需要禁用一行中的特定单元格,具体取决于同一行其他单元格中的值。
WPF 或 WPF MVVM 方案,欢迎使用这两种解决方案。
我都试过了,都不行!!!
【问题讨论】:
标签: wpf mvvm xamdatagrid
如果我理解正确的话。
您可能想查看 Datagrid.Columns 部分中的 DataGridTemplateColumn(请参阅下面的代码),因为这允许您为列/单元格设置自己的模板,然后您可以设置启用的属性。以下只是一个简单的解决方案,以后我会拥有它,这样当您更改更新模型的启用复选框时,模型又会启用行中的项目。
<DataGrid Name="dgrgrid" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTemplateColumn Header="Name">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Name}" IsEnabled="{Binding Enabled}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Type" />
<DataGridTextColumn Header="Size" />
<DataGridTextColumn Header="Price" />
<DataGridCheckBoxColumn Header="Row Enabled" Binding="{Binding Enabled}" />
</DataGrid.Columns>
</DataGrid>
对于后面的代码,我有一个名为 Cheese 的类的简单可观察集合,它具有您在下面看到的一些属性。 (这是基本的 M-V-VM 技术)
【讨论】:
感谢@Grenter。 我确实通过实现 Converter 类并将其实现为我的 xaml 文件中的静态资源来解决它。 另外,我发现我们可以使用单元格更新或单元格更新事件并在后面的 xaml 代码中编写一些代码行来做同样的事情,这是我通常不喜欢的。
但是转换器肯定是前进的方向。
非常感谢!!!
【讨论】: