Привязать ширину элемента интерфейса к ширине другого элемента интерфейса - PullRequest
4 голосов
/ 28 апреля 2010

Я хотел связать Width заголовка столбца с Width определенного заголовка. Однако код не работает. Если я укажу Width явно (Width = "100"), он будет работать нормально. Может кто-нибудь пролить свет и сказать, что не так с кодом ниже?

<dataGrid:DataGridTemplateColumn x:Name="pdpCol" Width="100">
        <dataGrid:DataGridTemplateColumn.Header>
            <Grid HorizontalAlignment="Stretch">
                <TextBlock Text="PDP" VerticalAlignment="Center" HorizontalAlignment="Center" 
                    TextWrapping="Wrap" Width="{Binding ElementName=pdpCol,Path=ActualWidth }" TextAlignment="Center" />
            </Grid>
        </dataGrid:DataGridTemplateColumn.Header>
</dataGrid:DataGridTemplateColumn>

Ответы [ 3 ]

5 голосов
/ 28 апреля 2010

Удалите HorizontalAlignment="Center" из TextBlock или установите для свойства значение Stretch. Тогда TextBlock будет использовать всю доступную ширину автоматически. Кроме того, если вы не показываете ничего, кроме текстового блока, то удалите сетку и используйте только текстовый блок. Вам также нужно установить HeaderTemplate, а не непосредственно заголовок.

<dataGrid:DataGridTemplateColumn x:Name="pdpCol" Width="100" Header="PDP">
    <dataGrid:DataGridTemplateColumn.HeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" TextAlign="Center" />
        </DataTemplate>
    </dataGrid:DataGridTemplateColumn.HeaderTemplate>
</dataGrid:DataGridTemplateColumn>

С наилучшими пожеланиями,
Оливер Ханаппи

1 голос
/ 28 апреля 2010

Попробуйте разметку ниже. Обратите внимание на использование HeaderStyle для растяжения шаблона и HeaderTemplate для фактического определения визуального шаблона для вашего элемента Header="PDP".

<dataGrid:DataGridTemplateColumn x:Name="pdpCol" Width="100" Header="PDP">
    <dataGrid:DataGridTemplateColumn.HeaderStyle>
         <Style TargetType="{x:Type Primitives:DataGridColumnHeader}">
              <Setter Property="HorizontalContentAlignment" Value="Stretch" />
              <Setter Property="VerticalContentAlignment" Value="Center" />
         </Style>
    </dataGrid:DataGridTemplateColumn.HeaderStyle>
    <dataGrid:DataGridTemplateColumn.HeaderTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding}" TextAlignment="Center" />
        </DataTemplate>
    </dataGrid:DataGridTemplateColumn.HeaderTemplate>
</dataGrid:DataGridTemplateColumn>
0 голосов
/ 28 апреля 2010

Проверьте, установлен ли ActualWidth, я думаю, что он будет работать, если вы просто используете Path=Width.

...