c# - Wpf 控制可见性?

标签 c# .net wpf vb.net visibility

我正在创建一个 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/

相关文章:

c# - WPF 自定义框架元素/IScrollInfo

c# - 在 WPF 的 HierarchicalDataTemplate 中获取 TreeViewItem 的父级

c# - 为什么 DateTime.ToString ("h") 导致异常?

c# - 如何使用控件数组在 C# 中获取给定对象的数组索引?

c# - 使用 JQuery 将文本框与动态创建的表中的单元格相乘

c# - 如何在运行时根据屏幕分辨率自动调整表单窗口大小(设计期间创建的窗口尺寸太大)

c# - 如何从 C# 将 const char* 传递给 C 函数?

.net - 如何对使用 PetaPoco.Database 的服务进行单元测试

javascript - 在 ASP.NET MVC 上运行 JavaScript FileResult

wpf - Prism 书籍是否针对 Prism 6 进行了更新?