你知道當你盯着某個東西足夠長的時候它不再有意義了......我試圖將listview項的背景屬性綁定到它是否屬於視圖模型中的一個集合。以下是我的工作的簡化版本:x:將ListView中的項綁定到ViewModel
<Grid>
<ListView x:Name="AirportListView"
SelectionMode="None"
IsItemClickEnabled="True"
ItemClick="AirportListView_ItemClick">
<ListView.ItemTemplate>
<DataTemplate x:DataType="x:String">
<Grid Padding="16">
<TextBlock Text="{x:Bind}" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
和:
public sealed partial class MainPage : Page
{
public ObservableCollection<string> MyAirports { get; set; } = new ObservableCollection<string>();
public MainPage()
{
this.InitializeComponent();
AirportListView.ItemsSource = new List<string>()
{
"EDDB",
"LGIR",
"EHAM",
"LFPO",
"EGKK"
};
}
private void AirportListView_ItemClick(object sender, ItemClickEventArgs e)
{
if (e.ClickedItem is string clickedAirport)
{
if (MyAirports.Contains(clickedAirport))
MyAirports.Remove(clickedAirport);
else
MyAirports.Add(clickedAirport);
}
}
}
理想我想實現什麼是網格的背景綁定在DataTemplate中,使其當一個項目是MyAirports的一部分時是不同的顏色。我只是無法弄清楚如何使用x:Bind或Binding來做到這一點。我可以想出更多的冗長的方法來實現同樣的目標,但是想知道是否有更好的數據綁定解決方案。
任何想法將不勝感激!
將
感謝佩德羅,是的,這是我實際嘗試做的一個簡化版本,但是我已經設法做到了這一點,就像你說'烘烤'一個名爲IsMyAirport的屬性到原來的類,並確保保持更新的變化到收藏。現在將嘗試讓它在我的應用程序中工作。非常感謝! – varyamereon