Я пишу шахматный интерфейс в WPF.
Я установил контекст данных окна в 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?