MultiDataTrigger не изменяет свойство IsReadOnly TextBox

Я использую MultiDataTrigger в многострочном TextBox:

<TextBox TextWrapping="Wrap" ScrollViewer.CanContentScroll="True"
                    FlowDirection="RightToLeft" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Auto"
                    Text="{Binding ArabicDescription}" IsReadOnly="True">
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
            <Style.Triggers>
                <MultiDataTrigger>
                    <MultiDataTrigger.Conditions>
                        <Condition Binding="{Binding Path=EnableNewEntry}" Value="True" />
                        <Condition Binding="{Binding Path=AllowArabic}" Value="True" />
                    </MultiDataTrigger.Conditions>
                    <Setter Property="IsReadOnly" Value="False" />
                    <Setter Property="Background" Value="Blue" />
                </MultiDataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

Когда EnableNewEntry и AllowArabic становятся истинными, TextBox должен стать доступным только для чтения. Просто для тестирования я также изменил цвет фона. Проблема в том, что IsReadOnly не меняется там, где должным образом меняется Background.

Я также пробовал следующий сеттер, но он тоже не работает:

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

Что я делаю не так?

Ритеш


person Ritesh    schedule 11.01.2013    source источник


Ответы (1)


Вы не должны явно устанавливать для IsReadolny значение True. Используйте MultiDataTrigger, который вы уже должны установить для него как false, и еще один, чтобы установить для него значение true, когда вы этого хотите, но НЕ УСТАНАВЛИВАЙТЕ ЭТО в свойствах TextBox.

person iltzortz    schedule 11.01.2013
comment
Первоначально я не устанавливал для свойства IsReadOnly значение True. Следуя вашему предложению, я определил несколько MultiDataTrigger (один с true и один с false), и это работает. Но разве это не работает с одним MultiDataTrigger? - person Ritesh; 11.01.2013
comment
Я говорил о IsReadOnly=True, который вы поместили в свои атрибуты Textbox непосредственно перед тем, как определить TextBox.Style. Как только вы удалите это, он сможет работать только с одним MultidataTrigger. - person iltzortz; 11.01.2013