使用XAML数据绑定时UWP InvalidCastException

本文关键字:UWP InvalidCastException 定时 绑定 XAML 数据 使用 | 更新日期: 2023-09-27 18:18:13

谁能解释一下XAML数据绑定表达式是如何计算的?我有一个具有注册属性VisualState的控件。

public CardStates VisualState
{
    get
    {
        return (CardStates)this.GetValue(VisualStateProperty);
    }
    set
    {
        this.SetValue(VisualStateProperty, value);
    }
}
public static readonly DependencyProperty VisualStateProperty = DependencyProperty.RegisterAttached("VisualStateProperty", typeof(CardStates), typeof(StateManager), new PropertyMetadata(null, (s, e) => { }));

在xaml中,我尝试将一个值绑定到这个属性。状态存在父对象的DataContext对象。

<local:CardControl  VisualState="{Binding State.Value}" />

XamlTypeInfo.g.cs中生成的代码如下所示

private void set_4_CardControl_VisualState(object instance, object Value)
{
    var that = (global::MeetEric.UI.Controls.CardControl)instance;
    that.VisualState = (global::MeetEric.ViewModels.CardStates)Value;
}

这段代码抛出InvalidCastException,因为value的值是一个windows . ui . xml . data . binding对象。

我是否错过了一些明显的东西来启用数据绑定?我需要某种形式的转换器吗?

使用XAML数据绑定时UWP InvalidCastException

尝试将typeof(StateManager)更改为typeof(CardControl)。(在DependencyProperty.RegisterAttached)

这个参数需要DependencyProperty的所有者。

尝试将Binding与常规属性结合使用时会发生此错误。为了将绑定解析为正确的类型,您需要绑定到DependencyProperty

正如其他人所提到的,您的语法有点问题,这可能导致这里的问题。

这个错误肯定是非常隐晦的。我只是在我自己的项目中点击它,但是一旦我将我的属性更改为依赖项,它就会完美地工作。