Понимание DataTrigger - PullRequest
       12

Понимание DataTrigger

1 голос
/ 08 февраля 2012

У меня есть ComboBox и TextBox, и я хочу включить / отключить только TextBox, когда в ComboBox выбран первый элемент.

Этот код работает: (отключить при выборе первого элемента)

            <ComboBox SelectedIndex="{Binding Mode}">
                <ComboBoxItem>Mode 1</ComboBoxItem>
                <ComboBoxItem>Mode 2</ComboBoxItem>
                <ComboBoxItem>Mode 3</ComboBoxItem>
            </ComboBox>
                <TextBox Text="{Binding ValueNotForMode1}">
                    <TextBox.Style>
                        <Style>
                            <Style.Triggers>
                                <DataTrigger Binding ="{Binding Mode}" Value="0">
                                    <Setter Property="TextBox.IsEnabled" Value="False"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBox.Style>
                </TextBox>

Это не работает: (включить при выборе первого элемента)

            <ComboBox SelectedIndex="{Binding Mode}">
                <ComboBoxItem>Mode 1</ComboBoxItem>
                <ComboBoxItem>Mode 2</ComboBoxItem>
                <ComboBoxItem>Mode 3</ComboBoxItem>
            </ComboBox>
                <TextBox IsEnabled="False" Text="{Binding ValueForMode1}">
                    <TextBox.Style>
                        <Style>
                            <Style.Triggers>
                                <DataTrigger Binding ="{Binding Mode}" Value="0">
                                    <Setter Property="TextBox.IsEnabled" Value="True"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBox.Style>
                </TextBox>

Разве нельзя включить управление через DataTrigger?

Или как мне сказать элементу управления, что делать, если триггер не происходит?

1 Ответ

3 голосов
/ 08 февраля 2012

Переместите IsEnabled="False" из вашего TextBox в TextBox.Style.

<Setter Property="TextBox.IsEnabled" Value="False" />

См. Значение свойства зависимости Приоритет для более ясного понимания.

...