C# 设置InkCanvas.InkPresenter绑定

C# 设置InkCanvas.InkPresenter绑定,c#,data-binding,windows-10,uwp,C#,Data Binding,Windows 10,Uwp,我有一个名为DataModel的类,我在其中存储有关我的应用程序状态的所有信息。在那里,我有一个名为DeviceInput的属性,键入为CoreInputDeviceTypes。这就是我保存的值,用于判断我的InkCanvas是否启用了触摸。我想将我的InkCanvas.InkPresenter.InputDeviceTypes属性绑定到DeviceInput属性。我创建了一个绑定: Binding inputBinding = new Binding(); inputBinding.Sourc

我有一个名为
DataModel
的类,我在其中存储有关我的应用程序状态的所有信息。在那里,我有一个名为
DeviceInput
的属性,键入为
CoreInputDeviceTypes
。这就是我保存的值,用于判断我的
InkCanvas
是否启用了触摸。我想将我的
InkCanvas.InkPresenter.InputDeviceTypes
属性绑定到
DeviceInput
属性。我创建了一个
绑定

Binding inputBinding = new Binding();
inputBinding.Source = DataModel.DeviceInput;
inputBinding.Mode = BindingMode.OneWay;
问题是我找不到任何方法来设置绑定到
InkCanvas.InkPresenter.InputDeviceTypes
属性。如果我尝试这样做:

MyInkCanvas.SetBinding(InkCanvas.InkPresenter...)
InkPresenter
不可用。这是有意义的,因为
InkPresenter
是一个子属性,而不是依赖属性。但我也做不到

MyInkCanvas.InkPresenter.SetBinding(...)

我猜这是因为
InkPresenter
来自
Windows.UI.Inking
而不是
Windows.UI.Xaml
。但是有没有办法在这个属性上设置一个绑定?

我想你可以使用一个自定义的依赖属性来解决这个问题。如下所示:

    public static readonly DependencyProperty InputDTsProperty =
        DependencyProperty.Register("InputDTs", typeof(Windows.UI.Core.CoreInputDeviceTypes), typeof(MainPage), new PropertyMetadata(null, new PropertyChangedCallback(InputDTsPropertyChanged))); 

    public Windows.UI.Core.CoreInputDeviceTypes InputDTs
    {
        //get;
        //set;
    }

    private static void InputDTsPropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
    {
        //set MyInkCanvas.InkPresenter.InputDeviceTypes here
    }

    public MainPage()
    {
        this.InitializeComponent();
        Binding inputBinding = new Binding();
        inputBinding.Source = DataModel.DeviceInput;
        inputBinding.Mode = BindingMode.OneWay;
        this.SetBinding(InputDTsProperty, inputBinding);
    }

不幸的是,这将打破我将所有数据保存在一个地方而仅仅让UI反映数据的模型。如果可能的话,选择另一种方式。