wpf - WPF显示/隐藏带有触发器的控件

标签 wpf mvvm triggers

我是WPF的新手,我试图创建xaml逻辑以基于ViewModel上AllowMiscTitle的值来显示/隐藏控件。 XAML中包含两个领域的标准砖的组合框(“先生”,“太太”,...,“其他”)时,“其他”选择我想要的文本框来显示。

我创建了以下xaml:

                <DockPanel Validation.Error="Validation_Error" HorizontalAlignment="Stretch">
                <ComboBox ItemsSource="{Binding Path=Titles, Mode=OneTime}" 
                      Text="{Binding Path=Title}"/>
                <TextBox x:Name="TxtBxTitle" Margin="5,5" Visibility="Visible">
                    <TextBox.Style>
                        <Style>
                            <Style.Triggers>
                                <DataTrigger Binding="{Binding Path=AllowMiscTitle}" Value="false">
                                    <Setter Property="TextBox.Visibility" Value="Hidden"/>
                                </DataTrigger>
                            </Style.Triggers>
                        </Style>
                    </TextBox.Style>
                </TextBox>

            </DockPanel>

最佳答案

Trigger无法正常工作,因为您已在Visibility中明确设置了TextBox属性

像这样做:

<TextBox x:Name="TxtBxTitle" Margin="5,5">
    <TextBox.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding Path=AllowMiscTitle}" Value="false">
                      <Setter Property="TextBox.Visibility" Value="Hidden"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

原因是Dependency property value precedence

关于wpf - WPF显示/隐藏带有触发器的控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17718623/

相关文章:

c# - 声称类似于 Windows 任务栏的桌面空间的 WPF 应用程序

android - 如何通过VIEWMODEL从数据库(MODEL)中的Activity(VIEW)获取添加的对象的ID。 Android,MVVM

MySQL:在自己的触发器中更新表

SwiftUI 观察到的对象在发布值更改时不更新

python - 在 sqlalchemy 中触发

jquery - 放大弹出窗口 "Maxium call stack size exceeded"

wpf - 增加StrokeThickness,但保持Path的尺寸

javascript - WebBrowser 控件不适用于某些 javascript 结构

wpf - 如何最小化/最大化功能区

c# - 生成从 csv 到列表框的列表