#.net #wpf #datatemplate #wpfdatagrid
#.net #wpf #datatemplate #wpfdatagrid
Вопрос:
Вот код, который я использовал. Я попытался установить VerticalAlignment равным Top, но когда отображаются сведения о строке (развернуть, чтобы показать), кнопка перемещается в центр строки.
<DataGrid.RowHeaderTemplate>
<DataTemplate>
<Grid>
<Button x:Name="c_expandCollapseBtn" Cursor="Hand" Click="OnExpandCollapseClick" Content=" "
MinHeight="8" MinWidth="15" VerticalAlignment="Top" HorizontalAlignment="Left"/>
</Grid>
</DataTemplate>
</DataGrid.RowHeaderTemplate>
Ответ №1:
вы устанавливаете выравнивание содержимого кнопок. вот стиль, который помещает презентацию содержимого заголовка строки вверху.
Редактировать
<Style x:Key="DataGridRowHeaderStyle" TargetType="{x:Type DataGridRowHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type DataGridRowHeader}">
<Grid>
<Microsoft_Windows_Themes:DataGridHeaderBorder BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" IsPressed="{TemplateBinding IsPressed}" IsHovered="{TemplateBinding IsMouseOver}" IsSelected="{TemplateBinding IsRowSelected}" Orientation="Horizontal" Padding="{TemplateBinding Padding}" SeparatorBrush="{TemplateBinding SeparatorBrush}" SeparatorVisibility="{TemplateBinding SeparatorVisibility}">
<StackPanel Orientation="Horizontal">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="Top"/>
<Control SnapsToDevicePixels="false" Template="{Binding ValidationErrorTemplate, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}" Visibility="{Binding (Validation.HasError), Converter={StaticResource bool2VisibilityConverter}, RelativeSource={RelativeSource AncestorType={x:Type DataGridRow}}}"/>
</StackPanel>
</Microsoft_Windows_Themes:DataGridHeaderBorder>
<Thumb x:Name="PART_TopHeaderGripper" Style="{StaticResource RowHeaderGripperStyle}" VerticalAlignment="Top"/>
<Thumb x:Name="PART_BottomHeaderGripper" Style="{StaticResource RowHeaderGripperStyle}" VerticalAlignment="Bottom"/>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Комментарии:
1. Спасибо, но все равно он отображается в центре после установки вертикального выравнивания по сетке
2. я увидел это, когда проверял это в vs, поэтому отредактировал свой ответ, включив стиль…
3. ОК. я не заметил код перед публикацией своего комментария. Я попробовал приведенный вами код, и у меня это работает. Спасибо!!!
Ответ №2:
Вы могли бы использовать инструмент Snoop — это поможет вам отладить макет вашего визуального элемента. Кажется, что сама сетка выровнена по центру. Поместите VerticalAlignment=»Top» в сетку.