Привязка столбцов верхнего колонтитула к ширине столбца DataGrid в коде - PullRequest
1 голос
/ 22 февраля 2010

Я создал сетку суперзаголовков, которые связываются с сеткой данных. Суперзаголовки остаются размещенными над соответствующими столбцами таблицы данных во время изменения размера столбцов таблицы данных.

Привязка XAML отличная, и все работает отлично.

Единственная проблема, однако, заключается в том, что мне нужно иметь возможность динамически создавать это в коде C #. Перепробовал несколько подходов, но я не могу заставить привязку работать.

Что такое эквивалент C # следующего XAML

Спасибо.

<Window x:Class="TESTDataColumnWidthBinding.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="419" Width="827" xmlns:my="http://schemas.microsoft.com/wpf/2008/toolkit">
<Grid x:Name="windowGrid">
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="2*"/>
    </Grid.RowDefinitions>
        <Grid Grid.Row="0" x:Name="SuperHeaderGrid">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="{Binding ElementName=DetailDataGrid, Path=RowHeaderWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column0, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column1, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column2, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column3, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column4, Path=ActualWidth}" />
            </Grid.ColumnDefinitions>
            <Border Grid.Column="2" Grid.ColumnSpan="5" BorderBrush="Gray" Background="AliceBlue" HorizontalAlignment="Stretch" BorderThickness="1">
                <Label>Super Header 1</Label>
            </Border>
        </Grid>
        <Grid Grid.Row="1" x:Name="CategoryHeaderGrid">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="{Binding ElementName=DetailDataGrid, Path=RowHeaderWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column0, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column1, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column2, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column3, Path=ActualWidth}" />
                <ColumnDefinition Width="{Binding ElementName=Column4, Path=ActualWidth}" />
            </Grid.ColumnDefinitions>
            <Border Grid.Column="2" Grid.ColumnSpan="2" BorderBrush="Gray" Background="Beige" HorizontalAlignment="Stretch" BorderThickness="1">
                <Label>Cat 1</Label>
            </Border>
            <Border Grid.Column="4" Grid.ColumnSpan="2" BorderBrush="Gray" Background="AntiqueWhite" HorizontalAlignment="Stretch" BorderThickness="1">
                <Label>Cat 2</Label>
            </Border>
        </Grid>

    <my:DataGrid Grid.Column="0" Grid.ColumnSpan="15" Grid.Row="3" x:Name="DetailDataGrid" ItemsSource="{Binding Path=.}" AlternatingRowBackground="AliceBlue">
        <my:DataGrid.Columns>
            <my:DataGridTextColumn x:Name="Column0" Header="ID" />
            <my:DataGridTextColumn x:Name="Column1" Header="Count1" />
            <my:DataGridTextColumn x:Name="Column2" Header="Count2" />
            <my:DataGridTextColumn x:Name="Column3" Header="Count3" />
            <my:DataGridTextColumn x:Name="Column4" Header="Count4" />
        </my:DataGrid.Columns>
    </my:DataGrid>
</Grid>

1 Ответ

0 голосов
/ 23 февраля 2010

должно быть эквивалентно:

Binding cdBinding = новая привязка ("RowHeaderWidth"); cdBinding.Source = DetailDataGrid;

ColumnDefinition colDef = new ColumnDefinition (); colDef.SetBinding (ColumnDefinition.WidthProperty, cdBinding);

SuperHeaderGrid.ColumnDefinitions.Add (COLDEF);

И аналогично для других определений столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...