我正在制作简单的纸牌游戏,请您介绍如何实例化收藏并添加内容。
这是我的基本Card类和Cards类,其中包含ObservableList of Cards
class Card
{
public String Name { get; set; }
}
class Cards
{
public ObservableCollection<Card> CardCollection { get; set; }
}
这是我的XAML,请注意绑定没问题但列表为空我不知道如何在列表中添加项目。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.DataContext>
<local:Cards x:Name="Cards"></local:Cards>
</Grid.DataContext>
<TextBlock Text="Cards"
FontFamily="Segoe UI"
FontSize="42"></TextBlock>
<ListView Margin="10,60,10,10" ItemsSource="{Binding CardCollection}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<WrapGrid/>
</ItemsPanelTemplate>
</ListView.ItemsPanel>
<ListView.ItemTemplate>
<DataTemplate>
<Grid Height="50" Background="White">
<TextBlock Text="{Binding Name}"/>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</Grid>
答案 0 :(得分:0)
我找到了答案。 必须先实例化Collection属性,然后才能使用它。 我已将它添加到我的卡类的构造函数中
class Cards
{
public ObservableCollection<Card> CardCollection { get; set; }
public Cards()
{
CardCollection = new ObservableCollection<Card>();
}
}
答案 1 :(得分:0)
您也可以这样做。
class Cards
{
private ObservableCollection<Card> _CardCollection = new ObservableCollection<Card>();
public ObservableCollection<Card> CardCollection
{
get
{
return _CardCollection;
}
set
{
_CardCollection=value;
OnPropertyChanged("CardCollection"); //Implement property changed event
}
}
}
注意:如果您希望propertychanged
反映您已绑定的ListView
中的更改,则可能必须实施ObservableCollection
事件。
修改:您可以从ObservableCollection
和Add()
方法添加和删除Remove()
中的项目。请查看此页面,了解ObservableCollection
http://msdn.microsoft.com/en-us/library/ms668604(v=vs.110).aspx
您可以像这样添加项目到集合
CardCollection.Add(new Card{Name="Ace of spades"});
编辑2:
是的,您可以使用实现ICommand接口并将命令绑定到控件。看一下这个http://www.markwithall.com/programming/2013/03/01/worlds-simplest-csharp-wpf-mvvm-example.html
如果您只想将实例绑定到XAML。您可以在Mainpage.xaml.cs
var bind = (Cards)DataContext;
您可以像bind.CardCollection