相关疑难解决方法(0)

是否可以创建一个通用的Int-to-Enum转换器?

我想能说

<DataTrigger Binding="{Binding SomeIntValue}" 
             Value="{x:Static local:MyEnum.SomeValue}">
Run Code Online (Sandbox Code Playgroud)

并让它解决,就True好像int值等于(int)MyEnum.Value

我知道我可以Converter返回(MyEnum)intValue,但是我必须为我在DataTriggers中使用的每个Enum类型创建一个转换器.

有没有一种通用的方法来创建一个能够提供这种功能的转换器?

c# wpf enums converter datatrigger

10
推荐指数
2
解决办法
6205
查看次数

在XAML中使用枚举值

我在C#中定义了一个枚举

public enum PointerStyle
{
  Pointer,
  Block,
  Slider
} ;
Run Code Online (Sandbox Code Playgroud)

我将它用作WPF自定义控件的依赖项属性

public static DependencyProperty DisplayStyleProperty =
    DependencyProperty.Register("DisplayStyle", typeof(PointerStyle), typeof(Pointer), new PropertyMetadata(PointerStyle.Pointer));

public PointerStyle DisplayStyle
{
  get { return (PointerStyle)GetValue(DisplayStyleProperty); }
  set { SetValue(DisplayStyleProperty, value); }
}
Run Code Online (Sandbox Code Playgroud)

并在ControlTemplate中使用它

<Trigger Property="DisplayStyle" Value="{x:Static local:PointerStyle.Block}">
Run Code Online (Sandbox Code Playgroud)

很多时候,但并非总是如此,编辑器强调了大部分代码并显示错误"'Block'不是属性'DisplayStype'的有效值." 如下面的屏幕截图所示

在此输入图像描述

这是在Visual Studio 2015中.

在运行时,代码完美运行.
在我的测试程序的设计窗口中,控件完全错误地呈现.

我究竟做错了什么?
在XAML中引用枚举值的最佳方法是什么?

(我很乐意使用TypeConverter并将值定义为字符串,但我找不到一个很好的例子.)

c# wpf enums xaml

4
推荐指数
1
解决办法
2466
查看次数

标签 统计

c# ×2

enums ×2

wpf ×2

converter ×1

datatrigger ×1

xaml ×1