1

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

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

- 因此,如果我在 property1 单元格中输入信息,那么我应该无法在 property2 单元格中输入任何内容。如果我在 property2 单元格中输入一些内容,那么我应该无法在 property1 单元格中输入任何内容。

4

1 回答 1

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 似乎有问题

DataGridTextColumn - 如何绑定 IsReadonly?

于 2012-08-13T17:06:48.210 回答