Re[2]: [WPF] DataGrid - Scrollbar слева и другое
От: Hex66 Россия  
Дата: 24.11.11 16:13
Оценка:
Здравствуйте, vit_as, Вы писали:

_>Здравствуйте, Hex66, Вы писали:


H>>Здравствуйте всем!


H>>Не могу найти возможность:

H>>- Как указать в XAML для DataGrid свойство отрисоваться VerticalScrollBar-у слева ?

_>Нужно переопределить шаблон для DataGrid


_>
_>                                    <Grid>
_>                                        <Grid.RowDefinitions>
_>                                            <RowDefinition Height="Auto"/>
_>                                            <RowDefinition Height="*"/>
_>                                            <RowDefinition Height="Auto"/>
_>                                        </Grid.RowDefinitions>

_>                                        <Grid.ColumnDefinitions>
_>                                            <ColumnDefinition Width="Auto"/>
_>                                            <ColumnDefinition Width="*"/>
_>                                            <ColumnDefinition Width="Auto"/>
_>                                        </Grid.ColumnDefinitions>

_>                                        <Button Command="{x:Static DataGrid.SelectAllCommand}"
_>                                                Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=CellsPanelHorizontalOffset}"
_>                                                Style="{DynamicResource {ComponentResourceKey TypeInTargetAssembly={x:Type DataGrid}, ResourceId=DataGridSelectAllButtonStyle}}"
_>                                                Focusable="false"
_>                                                Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=HeadersVisibility, Converter={x:Static DataGrid.HeadersVisibilityConverter}, ConverterParameter={x:Static DataGridHeadersVisibility.All}}" />
_>                                        <DataGridColumnHeadersPresenter Grid.Column="1" 
_>                                                           Name="PART_ColumnHeadersPresenter"
_>                                                           Visibility="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=HeadersVisibility, Converter={x:Static DataGrid.HeadersVisibilityConverter}, ConverterParameter={x:Static DataGridHeadersVisibility.Column}}"/>

_>                                        <ScrollContentPresenter x:Name="PART_ScrollContentPresenter" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2" CanContentScroll="{TemplateBinding CanContentScroll}" />

_>                                        <ScrollBar Grid.Row="1" Grid.Column="0" Name="PART_VerticalScrollBar"
_>                                                 Orientation="Vertical"
_>                                                 Maximum="{TemplateBinding ScrollableHeight}"
_>                                                 ViewportSize="{TemplateBinding ViewportHeight}"
_>                                                 Value="{Binding Path=VerticalOffset, RelativeSource={RelativeSource TemplatedParent}, Mode=OneWay}"
_>                                                 Visibility="{TemplateBinding ComputedVerticalScrollBarVisibility}"/>

_>                                        <Grid Grid.Row="2" Grid.Column="1">
_>                                            <Grid.ColumnDefinitions>
_>                                                <ColumnDefinition Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type DataGrid}}, Path=NonFrozenColumnsViewportHorizontalOffset}"/>
_>                                                <ColumnDefinition Width="*"/>
_>                                            </Grid.ColumnDefinitions>
_>


Спасибо, сработало. Только один момент не так.

Размер одного столбца задан как Width="*" , чтобы все колонки были видимыми и полностью занимали видимую область DataGrid.
До переноса ScrollBar-а налево, все было ОК. Сейчас место старого расположения ScrollBar-а не заполняется.

Для решения сей проблемы стоит аналогичным образом полностью переопределить шаблон для DataGridColumnHeadersPresenter ?
Или можно что поправиль в уже имеющемся коде ?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.