WPFでチェスUIを書いています。
XAML でウィンドウのデータ コンテキストを設定しました。
<Window.DataContext>
<local:MainViewModel />
</Window.DataContext>
ビュー モデルを保持する名前空間として「ローカル」名前空間を定義しました。
xmlns:local="clr-namespace:ChessUI"
ビュー モデルには、チェスの駒のコレクションである 1 つのプロパティがあります。
public class MainViewModel
{
public ObservableCollection<ChessPiece> ChessPieces { get; set; }
public MainViewModel()
:this(new ObservableCollection<ChessPiece>())
{
}
public MainViewModel(IEnumerable<ChessPiece> chessPieces)
{
this.ChessPieces = new ObservableCollection<ChessPiece>(chessPieces);
}
}
私は次のようChessPieces
にChessBoard
(ItemsControl)にバインドしようとしました:
<Viewbox RenderOptions.BitmapScalingMode="HighQuality">
<ItemsControl Name="ChessBoard" ItemsSource="{Binding ChessPieces}">
[...]
</ItemsControl>
</Viewbox>
ただし、実行時にピースは表示されません。ただし、下の行のコメントを外すと機能し、ボード上のすべてのピースが表示されます。
public MainWindow()
{
InitializeComponent();
var viewModel = new MainViewModel(this.GetStartingPositionChessPieces());
//this.ChessBoard.ItemsSource = viewModel.ChessPieces;
}
ただ明確にします:
XAML でバインディングを設定すると、次のようになります。
コードでバインディングを設定すると、次のようになります。
XAMLバインディングで私が間違っていることを知っている人はいますか?