我知道有很多其他类似的SO帖子,但似乎没有一个我的场景我绑定到类属性,其他属性工作得很好。我正在使用MVVM模式,我的viewmodel在c ++ / cli 中。由于其他属性有效,因此不是我的DataContext
视图。我在ViewModel中绑定了一个bool IsEnabled
Button
。现在,当试图绑定到类似的东西时,
private:
bool thing = false;
public:
bool Thing
{
bool get() { return thing; }
void set(bool value) { thing = value; }
}
它运作得很好。但后来我做了类似的事情,
public ref class MyThingClass
{
private:
bool isEnabled = false;
public:
bool IsEnabled
{
bool get() { return thing; }
void set(bool value) { thing = value; }
};
};
public:
//Not sure if I need a handle (^) on this or not
MyThingClass MyThing;
//XAML
<Button x:Name="MyButton" IsEnabled="{Binding MyThing.IsEnabled}"/>
某些东西决定破坏,属性没有绑定,在输出中我得到System.Windows.Data Error: 40 : BindingExpression path error: 'MyThing ' property not found on 'object' ''MyViewModel' (HashCode=66641179)'. BindingExpression:Path=MyThing.IsEnabled; DataItem='MyViewModel' (HashCode=66641179); target element is 'Button' (Name='MyButton'); target property is 'IsEnabled' (type 'Boolean')
如果我遗漏了任何内容,或者某些事情没有意义,请提出问题。
答案 0 :(得分:2)
当你写:
MyThingClass MyThing;
您创建名为MyThing
的公共字段,而不是属性。
为了使用数据绑定,需要将其定义为属性而不是字段:
property MyThingClass^ MyThing;
此外,如果您希望该媒体资源更新用户界面,则MyThingClass
需要实施INotifyPropertyChanged
。另请注意需要句柄类型(^
),因为它是托管类。