Как изменить шаблон управления WPF - PullRequest
0 голосов
/ 04 июня 2011

Продолжение этого вопроса: Как скрыть строки меню WPF DocumentViewer?

Я совершенно новичок в WPF и не уверен, с чего начать с настройки шаблона элемента управления. MSDN, кажется, не очень помогает.

Все, что мне нужно, это скрыть основную панель инструментов DocumentViewer, но когда я пытаюсь настроить файл XAML, он не компилируется. Какие шаги настройки?

1 Ответ

2 голосов
/ 04 июня 2011

В WPF шаблон элемента управления используется для «оформления» элемента управления с помощью набора элементов, которые составляют внешний вид и поведение элемента управления.Вам не нужно знать больше, чем это, чтобы начать использовать шаблоны управления.Шаги для настройки шаблона элемента управления:

  1. Найти стиль по умолчанию для ElementName (который включает шаблон элемента управления) с использованием MSDN, ShowMeTheTemplate, Expression Blend или файлов тем
  2. Копироватьстиль по умолчанию для ресурсов вашего приложения, обычно в App.xaml или в ресурсах элемента, таких как Window или Grid
  3. Изменить ключ с x:Key="{x:Type ElementName}" на x:Key="myStyleName"
  4. Изменение шаблона элемента управления для добавления, удаления или изменения элементов и свойств по умолчанию
  5. Используйте этот стиль в случаях ElementName, добавив атрибут Style="{StaticResource myStyleName}"

Итак, давайте сделаем это. Вот стиль по умолчанию для DocumentViewer из MSDN.Мы видим большой раздел, начинающийся с <ToolBar ...>, поэтому мы удалим все это.Затем, если вы выполните остальные шаги, вы получите XAML, например:

<Grid>
    <Grid.Resources>
        <Style x:Key="documentViewerNoToolbarStyle"
            TargetType="{x:Type DocumentViewer}">
            <Setter Property="Foreground"
                Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}" />
            <Setter Property="Background"
                Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
            <Setter Property="FocusVisualStyle"
                Value="{x:Null}" />
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DocumentViewer}">
                        <Border BorderThickness="{TemplateBinding BorderThickness}"
                            BorderBrush="{TemplateBinding BorderBrush}"
                            Focusable="False">
                            <Grid KeyboardNavigation.TabNavigation="Local">
                                <Grid.Background>
                                    <SolidColorBrush Color="{DynamicResource ControlLightColor}" />
                                </Grid.Background>
                                <Grid.RowDefinitions>
                                    <RowDefinition Height="Auto" />
                                    <RowDefinition Height="*" />
                                    <RowDefinition Height="Auto" />
                                </Grid.RowDefinitions>

                                <ScrollViewer Grid.Row="1"
                                    CanContentScroll="true"
                                    HorizontalScrollBarVisibility="Auto"
                                    x:Name="PART_ContentHost"
                                    IsTabStop="true">
                                    <ScrollViewer.Background>
                                        <LinearGradientBrush EndPoint="0.5,1"
                                            StartPoint="0.5,0">
                                            <GradientStop Color="{DynamicResource ControlLightColor}"
                                                Offset="0" />
                                            <GradientStop Color="{DynamicResource ControlMediumColor}"
                                                Offset="1" />
                                        </LinearGradientBrush>
                                    </ScrollViewer.Background>
                                </ScrollViewer>

                                <ContentControl Grid.Row="2"
                                    x:Name="PART_FindToolBarHost"/>
                            </Grid>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Grid.Resources>
    <DocumentViewer Style="{StaticResource documentViewerNoToolbarStyle}"/>
</Grid>
...