2014-02-12 4 views
0

Я работаю над простой карточной игрой, не могли бы вы рассказать о том, как создать коллекцию и добавить что-то к ней.XAML Collection Databinding

Вот мой основной класс карты и класса карты, который содержит ObservableList Карточный

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

Вы также можете сделать так.

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() методов. Посмотрите на эту страницу для всех методов, доступных для ObservableCollectionhttp://msdn.microsoft.com/en-us/library/ms668604(v=vs.110).aspx

Вы можете добавить элемент в коллекции здесь, как этот

CardCollection.Add(new Card{Name="Ace of spades"}); 

Edit 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

+0

Хотя Controll оказывается есть новый экземпляр создан. Не могли бы вы рассказать мне, как получить доступ к этому экземпляру? Я имею в виду, как добавлять и удалять элементы в кодировке. – user2847238

+0

Я знаю, как добавлять и удалять методы. Я имел в виду: классы находятся в файле Card.cs, и если я хочу перебирать события, такие как Click, эти события находятся в файле MainPage.xaml.cs. Как я могу получить доступ к моей коллекции из кода, когда она была создана XAML? Должен ли я использовать структуру команд? – user2847238

0

Я нашел ответ. . Собственность коллекции должна быть установлена ​​до ее использования. я добавил его в конструкторе моего класса карт

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

    public Cards() 
    { 
     CardCollection = new ObservableCollection<Card>(); 
    } 
} 
Смежные вопросы