gpt4 book ai didi

c# - Wpf 控制可见性?

转载 作者:行者123 更新时间:2023-11-30 20:05:20 25 4
gpt4 key购买 nike

我正在创建一个 Wpf 浏览器应用程序,它对不同的页面具有多个控件。每个页面都遵循相同的模式,如下所示:

在每个页面加载事件中,都有两个组合框对用户可见。当用户在 combobox 中选择任何值时,所有控件如 buttonlabeltextbox 都是可见的用户。

我想编写一个通用类/函数来隐藏控件,以便我可以在整个应用程序中使用。有什么办法可以做到吗?

最佳答案

解决方案一:

在每个页面中,您都可以像这样添加一个触发器来隐藏/显示控件 -

<ComboBox Height="22" Name="comboBox1" /> 
<Grid>
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Setter Property="Visibility" Value="Visible"></Setter>
<Style.Triggers>
<DataTrigger
Binding="{Binding ElementName=comboBox1, Path=SelectedItem}"
Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
<Grid.Style>

<!-- Your controls; TextBox, Buttons etc. -->

</Grid>

解决方案 2:

如果您需要更复杂的逻辑(比如基于两个组合框,那么您可以创建一个 MultiValueConverter 并在上面的 XAML 中使用它来设置 Grid 的 Visibility

如果在多个窗口中重复使用它,您可以创建一个样式并将其应用于所有窗口中的网格。

解决方案 3:

按照道德逻辑的建议创建一个通用的 ViewModel。

如果您使用 ViewModel 方法,则不需要 Visibility 属性,只需在触发器或转换器中使用 SelectedItem 属性即可;即使您想创建一个单独的属性,我也建议您将其设为 Boolean 类型并在 XAML 中使用它。

您可以在所有三种情况下创建一个通用样式,并在所有窗口中重用它。

关于c# - Wpf 控制可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11533153/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com