C# XAML集合数据绑定

C# XAML集合数据绑定,c#,windows,xaml,windows-store-apps,C#,Windows,Xaml,Windows Store Apps,我正在做一个简单的纸牌游戏,你能告诉我如何实例化收集并添加一些东西吗 这是我的基本卡片类和包含可观察卡片列表的卡片类 class Card { public String Name { get; set; } } class Cards { public ObservableCollection<Card> CardCollection { get; set; } } 这是我的XAML,请注意绑定是可以的,但列表是空的,我不知道如何在列表中添加项 <Grid

我正在做一个简单的纸牌游戏,你能告诉我如何实例化收集并添加一些东西吗

这是我的基本卡片类和包含可观察卡片列表的卡片类

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>
我找到了答案。 必须先安装集合属性,然后才能使用它。 我已经在我的Cards类的构造函数中添加了它

class Cards
{
    public ObservableCollection<Card> CardCollection { get; set; }

    public Cards()
    {
        CardCollection = new ObservableCollection<Card>();
    }
}

你也可以这样做

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  
        }
    }
}
编辑2:

是的,您可以使用实现ICommand接口并将命令绑定到控件。看看这个

如果您只是想将实例绑定到XAML。您可以在Mainpage.xaml.cs中这样访问它


您可以像bind.CardCollection这样获得绑定集合

当呈现控件时,会创建一个新实例。你能告诉我如何访问这个收集实例吗?我的意思是如何在代码隐藏中添加和删除元素。我知道添加和删除方法。我的意思是-类位于Card.cs文件中,如果我想记录诸如Click之类的事件,则这些事件位于MainPage.xaml.cs文件中。当我的集合由XAML实例化时,如何从代码隐藏中访问它?我应该使用命令结构吗?
CardCollection.Add(new Card{Name="Ace of spades"});
var bind = (Cards)DataContext;