Не работает привязка из контейнера ItemsControl
Я использую паттерн MVVM, привязываю ViewModel к DataContext.
public MainWindow()
{
InitializeComponent();
DataContext = new ViewModel();
}
В ViewModel у меня есть свойства Width и Height. Которые должны задавать количество столбцов и строк.
public int Width
{
get { return Field[0].Count; }
}
public int Height
{
get { return Field.Count; }
}
Код XAML(Почти в конце попытка привязаться к свойству)
<Border Grid.Row="1" BorderThickness="4" BorderBrush="Red" >
<ItemsControl Background="#3A4047" ItemsSource="{Binding Field}" HorizontalAlignment="Center" VerticalAlignment="Center" >
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Width="20" Height="20" Margin="1" >
<!--BorderThickness="1"-->
<Border.Style>
<Style TargetType="Border">
<!--<Setter Property="BorderBrush" Value="LightBlue"/>-->
<Style.Triggers>
<DataTrigger Binding="{Binding State}" Value="Snake">
<Setter Property="BorderBrush" Value="Blue"/>
<Setter Property="Background" Value="DodgerBlue"/>
</DataTrigger>
<DataTrigger Binding="{Binding State}" Value="Food">
<Setter Property="BorderBrush" Value="Red"/>
<Setter Property="Background" Value="LightPink"/>
<Setter Property="CornerRadius" Value="9"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<!--<VirtualizingStackPanel Orientation="Horizontal"/>-->
<UniformGrid Rows="{Binding Height, Mode=OneWay}" Columns="{Binding Width, Mode=OneWay}"></UniformGrid>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<VirtualizingStackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Border>
В итоге - сбой привязки [1]: https://i.stack.imgur.com/QgUdr.png
Field -
public ObservableCollection<ObservableCollection<Cell>> Field = new ObservableCollection<ObservableCollection<Cell>>();