iv'e得到由3類,其表示棋盤遊戲的DLL:WPF:綁定集合到一個ItemsControl
Board , Pipe , Checker
板是管道和管道的集合是跳棋
的集合對手的動作將包括從一個管道中取出一個檢查器並將其放置在另一個管道中。
我的板是由網格面板23項的控件來表示, 我需要每個項目控制綁定到一個管,以便顯示在UI上
玩家移動將由來完成運動所述itemcontrols 之間下降拖動(還沒有得到解決,以該部分還)
的檢查類別:
public Checker
{
public bool IsMine{get; set;}
}
的IsMine屬性需要被用來確定跳棋山口要麼 。
的管道類:持有跳棋
public class Pipe : INotifyPropertyChanged
{
public Pipe()
{
checkers = new ObservableCollection<Checker>();
}
private ObservableCollection<Checker> checkers {get;set;}
public ObservableCollection<Checker> Checkers
{
get { return checkers; }
set
{
checkers = value;
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs("Checkers"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
它與我需要做的就是創建一個2路的每個ItemsControl中之間的結合有什麼和管道項目的添加和刪除項目時,集合更改
的一個ObservableCollection我還需要一個自定義轉換器,它將檢查IsMine屬性並相應地設置對象 顏色(itemsControl DataItemTemplate由一個橢圓組成,其中 代表每個檢查器)。
至今iv'e只是填充集合,並將它們設置爲源項爲每個項控制
例如:
Pipe23.ItemsSource = board.Pipes[23].Checkers;
我面對2周的挑戰: (1) ether創建一個與OwnerToColor轉換器的雙向綁定,其代碼位於 之後,我找不到這樣做的例子。
(2)創建此標記中結合,但隨後我怎麼能初始化在適當的管道
例如啓動項目 :
pipe23 starts with 2 checkers
board.Pipes[23].Checkers.Add(new Checker(true));
board.Pipes[23].Checkers.Add(new Checker(true));
收集之間的2路綁定任何很好的例子和itemsControl將不勝感激。
ItemsControl的:
<ItemsControl Grid.Row="0" Grid.Column="0" Name="Pipe23" ItemTemplate="{StaticResource PipeDataItem}"/>
中的DataTemplate:
<DataTemplate x:Key="PipeDataItem" >
<Ellipse Width="45" Height="45" Fill="{Binding IsMine,Converter={StaticResource MyOwnerToColorConverter}}"></Ellipse>
</DataTemplate>
我開始覺得也許這是不可能使ItemsControl的和收集 我嘗試添加一個橢圓形的項目控制,這引發了異常,說明之間的牽引方式綁定 沒有項目可以在itemscontrol正在使用時添加。 – 2012-02-16 04:08:50