写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不够熟悉,有人可以解答一下吗?