這個主題在c#中似乎很容易,但我需要在C++/cx中處理它。我想用'CItem'的列表/矢量來填充listview。所以,我已經試過這樣:UWP - ListView綁定在C++/CX
XAML的MainPage:
<ListView x:Name="mainListView" HorizontalAlignment="Stretch" VerticalAlignment="Center" Margin="20,0,20,6" >
<ListView.ItemTemplate>
<DataTemplate>
<Grid Height="40" Margin="5">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Background ="Gray" Width="50" Height="50" >
<Image Source="{Binding Image}" Stretch="UniformToFill" ></Image>
</Border>
<StackPanel>
<TextBlock Text="{Binding Hostname}" TextWrapping="NoWrap"/>
</StackPanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
MainPage類:
Windows::UI::Xaml::Interop::IBindableVector^ test;
CItem^ item = ref new
CItem("name", "Assets/ic_help");
test->Append(item);
mainListView->ItemsSource = test;
CItem.h:
#pragma once
#include "pch.h"
ref class CItem sealed
{
private:
Platform::String^ name;
Platform::String^ image;
public:
CItem(Platform::String^ name, Platform::String^ image) :
name {name}, image {image} {}
property Platform::String^ Name
{
Platform::String^ get() { return this->name;}
}
property Platform::String^ Image
{
Platform::String^ get() { return this->image;}
}
};
我這段代碼的問題是我在IBindableVector上得到一個空指針^因爲我不知道如何初始化它。我試圖使用一個正常的字符串列表/矢量,但它不適用於C++。所以你對我有一個模板,或者我可以很容易地解決這個問題。我只是想要一個容器,我的自定義項目,每次我得到新的數據,我想再次設置ListView的ItemSource。我想使用 - > ItemSource進行綁定而不是ViewController模式的原因是,我希望稍後將listview傳遞給生成數據並更新列表的線程(就像我已經在C#中完成的那樣,它正在工作)。