Привязать столбец WPF DataGrid к другому - PullRequest
1 голос
/ 04 июня 2010

Я хочу включить / отключить DataGridTextColumn в зависимости от того, выбрано ли SelectedValue его соседнего DataGridComboBoxColumn == 'Other'

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

этот вопрос довольно похож на то, что я спрашиваю, я просто не могу швырнуть решение в то, что я ищу

1 Ответ

1 голос
/ 22 октября 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...