c# - 将 StackPanel.Visibility 绑定(bind)到其子项的 Visibility 属性

标签 c# wpf data-binding xaml

我对 DataBinding 比较陌生,只是阅读它。 我想要做的是:

我有一个带有许多子控件的 StackPanel:

        <StackPanel Orientation="Horizontal">
            <TextBox x:Name="textbox1" Width="100">1</TextBox>
            <TextBox x:Name="textbox2" Width="100">2</TextBox>
            <TextBox x:Name="textbox3" Width="100">3</TextBox>
        </StackPanel>

文本框的 visibility 属性可以通过代码更改。 现在,如果所有 TextBoxe 都设置为 Visibility=Collapsed,我还希望将 StackPanel.Visibility 设置为 Collapsed , 但如果显示一个或多个 TextBoxe (Visibility=Visible),则 StackPanel.Visibility 也应设置为 Visible.

这可以通过简单的 DataBinding 实现吗,还是我必须在 C# 代码中实现此功能?

最佳答案

我想不出直接通过数据绑定(bind)来做到这一点的方法。

我个人会在 View 后面有一个 View 模型,并将 View DataContext 设置为 View 模型。

在 View 模型中,如果所有文本框都折叠,我将有一个属性告诉 View 。该属性将由代码设置。然后将堆栈面板可见性绑定(bind)到该属性。

(该属性必须是依赖属性,或者 View 模型必须实现 INotifyPropertyChanged 以使 View 自动更新)

关于c# - 将 StackPanel.Visibility 绑定(bind)到其子项的 Visibility 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/569144/

相关文章:

c# - 将项目移动到列表顶部时,WPF AlternationIndex 会回绕

c# - 如何创建包含多个实体(作为单独的参数传递)的 "Include"重载?

C# 如果使用 LINQ 值为 NULL,则不要使用 GroupBy 进行聚合

c# - 在从 MS SQL Server 转换为 MySQL 时无法保存 Unicode

wpf - 如何在 XAML/Silverlight 中布局右上角的控件?

.net - WPF:如何使用 XAML 隐藏 GridViewColumn?

c# - ListChanged 时刷新 UltraGrid 的 GroupBy Sort 子带?

c# - 不能在另一个引用的项目中使用类

wpf - 获取用于 Prism 导航的已注册 View 列表

javascript - angular 2 我们是否需要在不需要时避免双向数据绑定(bind)?