你知道当你盯着某个东西足够长的时候它不再有意义了......我试图将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