将WPF DataGrid列绑定到另一个列

时间:2010-06-04 02:34:13

标签: wpf datagrid binding

我想根据相邻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问题与我提出的问题非常相似,我只是无法将解决方案变成我所追求的问题

1 个答案:

答案 0 :(得分:1)

我能想到解决这个问题的最简单方法实际上是创建一个DataGridTemplateColumn而不是DataGridTextBoxColumn,然后在模板中创建一个文本框。要禁用/启用文本框,请将IsEnabled属性绑定到基础OperatorId属性。您还必须编写一个ValueConverter来检查OperatorId值是否=='其他'并返回该值。