UWP XAML设置按位(标志)枚举值

时间:2017-08-09 21:43:59

标签: xaml uwp windows-10-universal inkcanvas

我正在寻找一种在UWP XAML中设置按位(标志)枚举值的方法。 WPF方法(以逗号分隔," value1,value2,value3和#34;)似乎不起作用。

非常感谢任何指针!

编辑1

看起来逗号分隔的语法是正确的。我遇到的问题与特定的枚举有特别的关系。我尝试使用以下属性在InkCanvas类上公开CoreInputDeviceTypes:

        public CoreInputDeviceTypes InputDeviceTypes
    {
        get { return (CoreInputDeviceTypes)GetValue(InputDeviceTypesProperty); }
        set { SetValue(InputDeviceTypesProperty, value); }
    }

    // Using a DependencyProperty as the backing store for InputDeviceTypes.  This enables animation, styling, binding, etc...
    public static readonly DependencyProperty InputDeviceTypesProperty =
        DependencyProperty.Register("InputDeviceTypes", typeof(CoreInputDeviceTypes), typeof(CustomInkCanvas), new PropertyMetadata(CoreInputDeviceTypes.Touch, new PropertyChangedCallback(OnInputDeviceChanged)));

    private static void OnInputDeviceChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        (d as CustomInkCanvas).InkPresenter.InputDeviceTypes = (CoreInputDeviceTypes)e.NewValue;
    }

XAML的一面是:

<local:CustomInkCanvas Width="2000" Height="2000" x:Name="inkCanvas" InputDeviceTypes="Mouse,Pen">
        </local:CustomInkCanvas>

失败了以下例外:

Failed to assign to property 'App5.CustomInkCanvas.InputDeviceTypes'. [Line: 14 Position: 101]'

1 个答案:

答案 0 :(得分:1)

只做

<Rectangle ManipulationMode="TranslateX,TranslateY" />

它应该有用。

更新

CoreInputDeviceTypes使用此: unit来阻止绑定工作。

[Flags]
public enum CoreInputDeviceTypes : uint
{
    //
    // Summary:
    //     No input.
    None = 0,
    //
    // Summary:
    //     Expose touch input events.
    Touch = 1,
    //
    // Summary:
    //     Expose pen input events.
    Pen = 2,
    //
    // Summary:
    //     Expose mouse input events.
    Mouse = 4
}

一个简单的解决方法是在没有它的情况下创建自己的枚举,并在属性中进行映射更改回调。