代码之家  ›  专栏  ›  技术社区  ›  Max Schmeling

如何根据WPF中的条件显示不同的控件?

wpf
  •  4
  • Max Schmeling  · 技术社区  · 14 年前

    我基本上需要屏幕的一部分有一个“身份验证”框,如果你登录,然后它显示你的用户名和一个“切换用户”按钮,但如果你没有登录,它只显示一个登录按钮。

    谢谢

    2 回复  |  直到 14 年前
        1
  •  10
  •   Mike    13 年前

    既然您提到了绑定可见性,我将展示我为解决类似问题所做的工作。

    在你的App.xaml中

    <Application.Resources>
        <BooleanToVisibilityConverter x:Key="VisibilityOfBool" />
    </Application.Resources>
    

    Visibility="{Binding IsEditable, Converter={StaticResource VisibilityOfBool}}"
    

    这将切换控件的可见性 IsEditable

        2
  •  3
  •   Reed Copsey    14 年前

    你选择有两个独立的控件实际上是我的第一选择。

    这样做的好处是可以彻底、轻松地测试两个控件。您可以根据DataContext中的任何条件轻松地使用触发器来切换哪个控件可见。它干净,简单,相当优雅。

    也就是说,如果你想避免这种情况,还有其他的选择。

    例如,您可以使用 ContentPresenter ,并将其内容绑定到DataContext中的属性,该属性仅定义为“object”。然后,您可以在运行时将其设置为单独的类型(当它是经过身份验证的还是未经过身份验证的)。通过为每种类型指定一个DataTemplate,WPF将自动为您连接适当的控件(这基本上是一种ViewModel-first-MVVM风格的方法。)