【问题标题】:XAML Collection DatabindingXAML 集合数据绑定
【发布时间】:2014-02-12 15:47:00
【问题描述】:

我正在开发简单的纸牌游戏,请您指导如何实例化收藏并添加一些东西。

这是我的基本 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>

【问题讨论】:

    标签: c# windows xaml windows-store-apps


    【解决方案1】:

    你也可以这样做。

    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  
            }
        }
    }
    

    注意:如果您希望 ListView 反映您已绑定的 ObservableCollection 中的更改,您可能必须实现 propertychanged 事件。

    编辑:您可以通过Add() 和Remove() 方法从ObservableCollection 添加和删除项目。查看此页面,了解所有可用于 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获得绑定集合

    【讨论】:

    • 在呈现控件时,会创建一个新实例。你能告诉我如何访问这个集合实例吗?我的意思是如何在代码隐藏中添加和删除元素。
    • 我知道 Add 和 Remove 方法。我的意思是 - 类位于 Card.cs 文件中,如果我想处理 Click 等事件,这些事件位于 MainPage.xaml.cs 文件中。当我的集合被 XAML 实例化时,如何从后面的代码访问我的集合?我应该使用命令结构吗?
    【解决方案2】:

    我找到了答案。 集合属性必须先实例化才能使用。 我已将其添加到 Cards 类的构造函数中

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

    【讨论】:

      猜你喜欢
      • 2018-10-13
      • 2016-12-29
      • 2013-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 1970-01-01
      相关资源
      最近更新 更多