【问题标题】:MultiDataTrigger does not change IsReadOnly property of TextBoxMultiDataTrigger 不会更改 TextBox 的 IsReadOnly 属性
【发布时间】:2012-12-26 07:40:26
【问题描述】:

我在多行TextBox中使用MultiDataTrigger

<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>

EnableNewEntryAllowArabic 变为真时,TextBox 应该变为只读。为了测试,我也改变了背景颜色。问题是IsReadOnly 没有改变,而Background 适当地改变了。

我也尝试了以下设置器,但它也不起作用:

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

我做错了什么?

Ritesh

【问题讨论】:

    标签: wpf xaml multidatatrigger


    【解决方案1】:

    您不应将 IsReadolny 显式设置为 True 使用 MultiDataTrigger,您已经必须将其设置为 false,并且在需要时将另一个设置为 true,但不要在 TextBox 属性中设置它

    【讨论】:

    • 我最初没有将 IsReadOnly 属性设置为 True。根据您的建议,我定义了多个 MultiDataTrigger(一个带有 true 和一个带有 false),并且可以正常工作。但它不能与单个 MultiDataTrigger 一起工作吗?
    • 我说的是在定义 TextBox.Style 之前放置在 Textbox 属性中的 IsReadOnly="True"。删除它后,它只能与一个 MultidataTrigger 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2015-08-05
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-24
    • 2012-08-01
    • 1970-01-01
    相关资源
    最近更新 更多