我想根据相邻DataGridComboBoxColumn的SelectedValue =='Other'来启用/禁用DataGridTextColumn
我可以在ListBox中使用它,如下所示,但这在我的DataGrid环境中不起作用,因为DataGridComboBox列没有name属性。
<ListBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Source={StaticResource CustomData}}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox Name="operatorComboBox" SelectedValue="{Binding OperatorId}" ItemsSource="{Binding Source={StaticResource Operator}}" SelectedValuePath="Id" DisplayMemberPath="Name"></ComboBox>
<TextBox Text="{Binding Name}" Visibility="{Binding Path=SelectedValue, ElementName=operatorComboBox, Converter={StaticResource intToVis}}"></TextBox>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这可以通过DataGrid完成吗?
(我知道我已经改变了ListBox示例中的可见性,但它不是一个巨大的飞跃,可以将其更改为启用。(显然,在正确的DataGrid中隐藏整个列将是一件坏事)
this问题与我提出的问题非常相似,我只是无法将解决方案变成我所追求的问题
答案 0 :(得分:1)
我能想到解决这个问题的最简单方法实际上是创建一个DataGridTemplateColumn而不是DataGridTextBoxColumn,然后在模板中创建一个文本框。要禁用/启用文本框,请将IsEnabled属性绑定到基础OperatorId属性。您还必须编写一个ValueConverter来检查OperatorId值是否=='其他'并返回该值。