あなたは何か長いことを見つめて、実際にはそれ以上意味をなさないときは知っています...リストビューアイテムのバックグラウンドプロパティをバインドしようとしていますビューモデル内のコレクション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