2010-06-04 9 views
1

Я хочу, чтобы включить/отключить DataGridTextColumn на основе того или нет SelectedValue из соседней DataGridComboBoxColumn == «Other»Bind WPF DataGrid столбец в другую

я могу сделать эту работу в 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

Самый простой способ решить эту проблему - создать DataGridTemplateColumn вместо Затем DataGridTextBoxColumn создаст текстовое поле внутри шаблона. Чтобы отключить/включить текстовое поле, привяжите свойство IsEnabled к базовому свойству OperatorId. Вам также нужно будет написать Va lueConverter, который проверяет, является ли значение OperatorId == 'Other' и возвращает это значение.

Смежные вопросы