我对 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/