使用XAML数据绑定时UWP InvalidCastException

时间:2015-10-17 21:47:11

标签: c# xaml winrt-xaml win-universal-app

有人能解释如何评估XAML数据绑定表达式吗?我有一个注册属性VisualState的控件。

(rev1 [a,b,...,n]) = {a} + (rev1 [b,...,n])
(rev2 [a,...,m,n]) = {n} + (rev2 [a,...,m])

在xaml中,我尝试将值绑定到此属性。 State存在父的DataContext对象。

+ == g == append

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

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) => { }));

此代码抛出InvalidCastException,因为Value的值是Windows.UI.Xaml.Data.Binding对象。

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

2 个答案:

答案 0 :(得分:1)

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

此参数需要DependencyProperty的所有者。

答案 1 :(得分:0)

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

正如其他人所提到的,您的语法有些偏离,这可能会在这里引起问题。

此错误肯定是非常神秘的。我只是在自己的项目中找到了它,但是一旦我将属性更改为依赖项,它就可以正常工作。