Data binding 更新通过XAML和x:Bind(C+;+;/CX)定义的绑定

Data binding 更新通过XAML和x:Bind(C+;+;/CX)定义的绑定,data-binding,win-universal-app,c++-cx,Data Binding,Win Universal App,C++ Cx,以下代码可用于通过x:Bind引导XAML的更新 public ref class MyEntry sealed : INotifyPropertyChanged { public: virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ PropertyChanged; void OnPropertyChanged( Platform::String^ propertyName ) {

以下代码可用于通过x:Bind引导XAML的更新

public ref class MyEntry sealed : INotifyPropertyChanged
{
public:
    virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler^ PropertyChanged;
    void OnPropertyChanged( Platform::String^ propertyName )
    {
        PropertyChanged( this, ref new Windows::UI::Xaml::Data::PropertyChangedEventArgs( propertyName ) );
    }  
    ...
    property String^ Text1
    ...
现在,如果
MyEntry
对象中的某些内容发生了更改,例如定义为
Text1
的属性,我们将调用
OnPropertyChanged(“Text1”)
来诱导视图中的更新


现在需要考虑的问题是:字符串“Text1”必须与属性定义匹配,但在编译时无法保证这一点。我也不知道如何在运行时捕获它。

在完成一些测试之后,
PropertyChanged
的行为似乎是这样的:将空字符串(甚至
nullptr
)传递为
propertyName
,将正确更新绑定,更新甚至将通过视图树向上传输。但是如果传递一个特定的名称,则只会更新匹配的元素。很好,但是有任何文档吗?对于您可以参考的文档,PropertyChanged事件可以通过使用PropertyChangedEventArgs的PropertyName属性的String.Empty指示对象上的所有属性都已更改。PropertyChanged事件可以通过对特定索引器使用PropertyName值“Item[indexer]”或对所有索引器使用“Item[]”来指示对象上的索引器属性已更改。请注意,C++目前不支持绑定到索引器。