none
BindingExpression 错误 RRS feed

  • 问题

  • 写ListView的时候不知道为何出现了BindingExpression错误,自己调试了很久也没有结果,也google了一下,发现stackoverflow里面有类似的回答,但是还是没解决,这个是为什么?

    namespace Test {
    	public ref class Message sealed {
    	public:
    		property Platform::String^ msg {Platform::String^ get() { return _msg; } void set(Platform::String^ t_msg) { _msg = t_msg; }}
    	private:
    		Platform::String^ _msg;
    	};
    }
    MainPage::MainPage()
    {
    	using namespace Platform::Collections;
    	InitializeComponent();
    	
    	itemSet = ref new Platform::Collections::Vector<Message^>;
    	Message^ Message0 = ref new Message;
    	Message0->msg = "Hello Message0";
    
    	Message^ Message1 = ref new Message;
    	Message1->msg = "Hello Message1";
    
    	Message^ Message2 = ref new Message;
    	Message2->msg = "Hello Message2";
    
    	Message^ Message3 = ref new Message;
    	Message3->msg = "Hello Message3";
    
    	Message^ Message4 = ref new Message;
    	Message4->msg = "Hello Message4";
    
    	itemSet->Append(Message0);
    	itemSet->Append(Message1);
    	itemSet->Append(Message2);
    	itemSet->Append(Message3);
    	itemSet->Append(Message4);
    
    	this->DataContext = itemSet;
    	this->mylistView->ItemsSource = itemSet;
    }

    XAML:

            <ListView x:Name="mylistView" Margin="10,315,10,10" d:LayoutOverrides="LeftPosition, RightPosition, TopPosition, BottomPosition">
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid Margin="6" Height="120">
                            <TextBlock Name="Test_Text" Margin="10,0,0,0" Text="{Binding msg}"></TextBlock>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>

    错误信息如下:

    Error: BindingExpression path error: 'msg' property not found on 'Test.Message'. BindingExpression: Path='msg' DataItem='Test.Message'; target element is 'Windows.UI.Xaml.Controls.TextBlock' (Name='Test_Text'); target property is 'Text' (type 'String')

    用C++/CX写代码,但是我觉得应该问题不在语言,应该在XAML,但是实在是对XAML不够熟悉,有人可以解答一下吗?



    • 已编辑 eXIA_C 2016年3月7日 7:32
    2016年3月7日 7:30

答案

  • 问题的原因在于使用{Binding}与C++/CX的话,必须实现ICustomPropertyProvider接口或者使用BindableAttribute类

    • 已标记为答案 eXIA_C 2016年3月8日 11:07
    2016年3月8日 11:07