如果正在使用其他单元,则禁用DataGridCell

时间:2012-08-13 16:59:08

标签: c# wpf xaml wpfdatagrid

在数据网格内部的一行中,如果正在使用它旁边的单元格或反之,我正在尝试禁用单元格/字段。换句话说,如果用户将信息输入到一个单元格中,则另一个应该被禁用或只读或其他东西,用户只能输入一个或另一个。我怎样才能做到这一点?我可以以某种方式创建一个转换器?同时,用户应该能够将该单元归零,以防他不想在该单元中输入信息。任何建议都非常感谢。

 <DataGridTextColoumn Binding="{Binding Property1}" Header="Property1" />
 <DataGridTextColoumn Binding="{Binding Property2}" Header="Property2" />

- 如果我在info1单元格中输入info,那么我就无法在property2单元格中输入任何内容。如果我在property2单元格中输入内容,那么我就无法在property1单元格中输入任何内容。

1 个答案:

答案 0 :(得分:1)

转换器可以工作(如您所述)。像这样的东西

<Window 
    ...
    xmlns:c="clr-namespace:*YourConverter'sNamespace*"
    ...
    />
<Window.Resources>
    <c:NotBlankConverter x:Key="NotBlankConverter"/>
</Window.Resources>
...
<DataGridTextColoumn 
    Binding="{Binding Property1}" 
    Header="Property1" 
    IsReadOnly="{Binding Property2, Converter={StaticResource NotBlankConverter}"
    />
...

您的转换器可以看起来像这样

class NotBlankConverter: IValueConverter
{
    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        return string.IsNullOrEmpty(value);
    }
    ...
}

<强>更新

由于IsReadOnly DP对DataGridTextColumn的工作方式,它似乎实际上不起作用。要拥有一个完整的工作解决方案,需要实现这些问题......

.Net v4 DataGridTextColumn.IsReadOnly seems to be faulty

DataGridTextColumn - How to bind IsReadonly?