我有一个用户控件(NameField)。在其中,我有一个包含3个网格的堆栈面板:StandardViewFluidViewOtherView。在后面的代码中,我有一个称为DependencyPropertyView,类型为NameFieldView(enum)。枚举包含STANDARDFLUIDOTHER

我认为我必须创建一个转换器,但是我不确定是否有必要。我基本上是想使其唯一可见的网格是与枚举值匹配的网格……也就是说,如果View = NameFieldView.STANDARD,则名为StandardView的网格是可见的,而其他两个网格则不可见。

另外,我不确定这是否应该是Grid.Resources / StyleGrid.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/

10-13 06:46