在数据网格内部的一行中,如果正在使用它旁边的单元格或反之,我正在尝试禁用单元格/字段。换句话说,如果用户将信息输入到一个单元格中,则另一个应该被禁用或只读或其他东西,用户只能输入一个或另一个。我怎样才能做到这一点?我可以以某种方式创建一个转换器?同时,用户应该能够将该单元归零,以防他不想在该单元中输入信息。任何建议都非常感谢。
<DataGridTextColoumn Binding="{Binding Property1}" Header="Property1" />
<DataGridTextColoumn Binding="{Binding Property2}" Header="Property2" />
- 如果我在info1单元格中输入info,那么我就无法在property2单元格中输入任何内容。如果我在property2单元格中输入内容,那么我就无法在property1单元格中输入任何内容。
答案 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的工作方式,它似乎实际上不起作用。要拥有一个完整的工作解决方案,需要实现这些问题......