Динамическое добавление Canvas в строку

Попытка добавить на каждую строку по Canvas, с последующей возможностью его изменения. Ошибок компиляции нет, и вроде как новый экземпляр Canvas присваивается свойству ShowCanvas и добавляется в коллекцию CanvasList через цикл в методе Window_Loaded. На как проверка - изменения цвета, не работает. Наследование CanvasData от Canvas ни к чему тоже не привело

using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;

namespace Sequencer_2._1._1
{
     public partial class MainWindow : INotifyPropertyChanged
     {
        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
            => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        private ObservableCollection<RowData> _rows;
        public ObservableCollection<RowData> Rows
        {
            get => _rows;
            set
            {
                _rows = value;
                OnPropertyChanged();
            }
        }
        private ObservableCollection<CanvasData> _canvasList;
        public ObservableCollection<CanvasData> CanvasList
        {
            get => _canvasList;
            set
            {
                _canvasList = value;
                OnPropertyChanged();
            }
        }
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }

        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            Rows = new ObservableCollection<RowData>();
            for (int i = 0; i < 400; i++)
                Rows.Add(new RowData() { Title = "Item" + i });

            CanvasList = new ObservableCollection<CanvasData>();
            for (int i = 0; i < 400; i++)
            {
                CanvasList.Add(new CanvasData() { ShowCanvas = new Canvas() });
            }
            for (int i = 0; i < 400; i++)
            {
                CanvasList[i].ShowCanvas.Background = Brushes.Red;
            }
        }
    }
    public class RowData
    {
        public string Title { get; set; }
    }
    public class CanvasData
    {
        public Canvas ShowCanvas { get; set; }
    }
}

.xaml Привязка к свойству во 2ом Border и 2 колонке

<Grid>
    <ScrollViewer VerticalScrollBarVisibility="Auto">
        <ItemsControl ItemsSource="{Binding Rows}">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <Grid SnapsToDevicePixels="True">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="60"/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
                        <Border Background="LightSlateGray">
                            <TextBlock Padding="10,5" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding Title}"/>
                        </Border>
                        <Border Grid.Column="0" BorderThickness="0,0,0,1">
                            <Border.BorderBrush>
                                <VisualBrush>
                                    <VisualBrush.Visual>
                                        <Rectangle StrokeDashArray="4 4" Stroke="Gray" StrokeThickness="1"
                                            Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, 
                                            Path=ActualWidth}"
                                            Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, 
                                            Path=ActualHeight}"/>
                                    </VisualBrush.Visual>
                                </VisualBrush>
                            </Border.BorderBrush>
                        </Border>
                        <Border Grid.Column="1" BorderThickness="0,0,0,1">
                            <Canvas>
                                <ContentPresenter Content="{Binding Path = ShowCanvas}"/>
                            </Canvas>
                            <Border.BorderBrush>
                                <VisualBrush>
                                    <VisualBrush.Visual>
                                        <Rectangle StrokeDashArray="4 4" Stroke="Gray" StrokeThickness="1"
                                            Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, 
                                            Path=ActualWidth}"
                                            Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type Border}}, 
                                            Path=ActualHeight}"/>
                                    </VisualBrush.Visual>
                                </VisualBrush>
                            </Border.BorderBrush>
                        </Border>
                    </Grid>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
    </ScrollViewer>
</Grid>

Ответы (0 шт):