xamdatagrid有条件地禁用列

时间:2012-07-31 19:42:19

标签: wpf mvvm xamdatagrid

我要求连续禁用一个特定的单元格,具体取决于同一行的其他单元格中的值。

WPF或WPF MVVM场景,欢迎这两种解决方案。

我试过了两个都没有用!!!

2 个答案:

答案 0 :(得分:2)

如果我理解正确的话。

您可能需要查看Datagrid.Columns部分中的DataGridTemplateColumn(请参阅下面的代码),因为这允许您为列/单元格设置自己的模板,然后您可以设置enabled属性。以下只是一个简单的解决方案,并且我将继续这样做,以便当您更改启用模板的启用复选框时,该复选框将启用行中的项目。

        <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技术)

答案 1 :(得分:0)

谢谢@Grenter。 我通过实现Converter类并在我的xaml文件中将其实现为静态资源来解决它。 另外,我发现我们可以使用单元格更新或单元格更新事件并在后面的xaml代码中编写一些代码行来做同样的事情,我通常不喜欢这样做。

但转换器肯定是前进的方式。

非常感谢!!!