У меня есть 2-мерный массив объектов, и я в основном хочу привязать каждую из них к ячейке в сетке WPF. В настоящее время у меня это работает, но я делаю большую часть этого процедурно. Я создаю правильное количество определений строк и столбцов, затем я просматриваю ячейки и создаю элементы управления и настраиваю правильные привязки для каждого из них.
Как минимум, я хотел бы иметь возможность использовать шаблон для указания элементов управления и привязок в xaml. В идеале я хотел бы избавиться от процедурного кода и просто сделать все это с привязкой данных, но я не уверен, что это возможно.
Вот код, который я использую в настоящее время:
public void BindGrid()
{
    m_Grid.Children.Clear();
    m_Grid.ColumnDefinitions.Clear();
    m_Grid.RowDefinitions.Clear();
    for (int x = 0; x < MefGrid.Width; x++)
    {
        m_Grid.ColumnDefinitions.Add(new ColumnDefinition() { Width = new GridLength(1, GridUnitType.Star), });
    }
    for (int y = 0; y < MefGrid.Height; y++)
    {
        m_Grid.RowDefinitions.Add(new RowDefinition() { Height = new GridLength(1, GridUnitType.Star), });
    }
    for (int x = 0; x < MefGrid.Width; x++)
    {
        for (int y = 0; y < MefGrid.Height; y++)
        {
            Cell cell = (Cell)MefGrid[x, y];                    
            SolidColorBrush brush = new SolidColorBrush();
            var binding = new Binding("On");
            binding.Converter = new BoolColorConverter();
            binding.Mode = BindingMode.OneWay;
            BindingOperations.SetBinding(brush, SolidColorBrush.ColorProperty, binding);
            var rect = new Rectangle();
            rect.DataContext = cell;
            rect.Fill = brush;
            rect.SetValue(Grid.RowProperty, y);
            rect.SetValue(Grid.ColumnProperty, x);
            m_Grid.Children.Add(rect);
        }
    }
}



