我有一个用户控件(NameField
)。在其中,我有一个包含3个网格的堆栈面板:StandardView
,FluidView
和OtherView
。在后面的代码中,我有一个称为DependencyProperty
的View
,类型为NameFieldView
(enum
)。枚举包含STANDARD
,FLUID
和OTHER
。
我认为我必须创建一个转换器,但是我不确定是否有必要。我基本上是想使其唯一可见的网格是与枚举值匹配的网格……也就是说,如果View = NameFieldView.STANDARD
,则名为StandardView
的网格是可见的,而其他两个网格则不可见。
另外,我不确定这是否应该是Grid.Resources / Style
或Grid.Triggers
的一部分?
最佳答案
像许多WPF一样,它实际上取决于您的口味。这里有一些选择。
您可以创建三个IValueConverter,将View属性的值转换为Visibility(或将枚举名称用作ConverterParameter并创建一个转换器)。
您可以创建三个新属性,分别称为“StandardViewIsVisible”,“FluidViewIsVisible”和“OtherViewIsVisible”,这些属性将在View属性更改时进行更新。这些属性的返回类型为Visibility。即使您不使用ViewModel,也绝对是一种“MVVM”处理方式。
您可以使用DataTrigger来基于View属性的当前值设置适当的网格“可见”或“折叠”。
关于c# - WPF 触发器绑定(bind) : What's the best way to bind an enum value to visiblity?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3720244/