Как изменить AvalonDock NavigatorWindow - PullRequest
0 голосов
/ 07 мая 2019

Я использую AvalonDock в качестве диспетчера стыковки для моего приложения. Я заметил, что у него есть окно Ctrl + Tab (NavigatorWindow), но, похоже, есть некоторые странные жестко закодированные классификации. Я переключил свой последний LayoutAnchorable на LayoutDocument, так что, по крайней мере, у меня сейчас нет вещей в разных группах, но мне действительно не нужны «Active Tool Windows», и «Активные файлы» не имеют смысла в мой контекст.

Есть ли способ настроить этот компонент? В идеале я просто хотел бы скрыть левый список и изменить плитку правого списка на нечто более общее, например «Активные окна».

Screenshot

1 Ответ

1 голос
/ 09 мая 2019

Существует стиль, который вы можете переопределить (см. Ниже). NavigatorWindow сам по себе не имеет свойств зависимостей, которые вы могли бы использовать для его настройки, поэтому я не думаю, что вы можете сделать больше, чем рестайлинг - но, возможно, это все, что вам нужно: -)

xmlns:avalonDockControls="clr-namespace:Xceed.Wpf.AvalonDock.Controls"

              <Style x:Key="{x:Type avalonDockControls:NavigatorWindow}"
                     TargetType="{x:Type avalonDockControls:NavigatorWindow}">
                <Setter Property="Background"
                        Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" />
                <Setter Property="SizeToContent"
                        Value="WidthAndHeight" />
                <Setter Property="ResizeMode"
                        Value="NoResize" />
                <Setter Property="shell:WindowChrome.WindowChrome">
                  <Setter.Value>
                    <shell:WindowChrome ResizeBorderThickness="10"
                                        CaptionHeight="16"
                                        CornerRadius="3,3,3,3"
                                        GlassFrameThickness="4" />
                  </Setter.Value>
                </Setter>
                <Setter Property="Template">
                  <Setter.Value>
                    <ControlTemplate TargetType="{x:Type avalonDockControls:NavigatorWindow}">
                      <Grid>
                        <Border x:Name="WindowBorder"
                                BorderThickness="3"
                                Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
                                BorderBrush="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}">
                          <Grid Margin="5">
                            <Grid.RowDefinitions>
                              <RowDefinition MinHeight="54" />
                              <RowDefinition Height="*" />
                              <RowDefinition MinHeight="42" />
                            </Grid.RowDefinitions>

                            <Grid>
                              <Grid.RowDefinitions>
                                <RowDefinition />
                                <RowDefinition />
                              </Grid.RowDefinitions>
                              <Grid>
                                <Grid.ColumnDefinitions>
                                  <ColumnDefinition Width="Auto" />
                                  <ColumnDefinition />
                                </Grid.ColumnDefinitions>
                                <Image Source="{Binding SelectedDocument.LayoutElement.IconSource, Converter={StaticResource NullToDoNothingConverter}}"
                                       Stretch="None">
                                </Image>
                                <TextBlock x:Name="selectedElementTitle"
                                           Text="{Binding SelectedDocument.LayoutElement.Title}"
                                           TextTrimming="CharacterEllipsis"
                                           Grid.Column="1"
                                           VerticalAlignment="Center"
                                           FontWeight="Bold"
                                           Margin="4,0,0,0">
                                </TextBlock>
                              </Grid>
                              <TextBlock x:Name="selectedElementDescription"
                                         Text="{Binding SelectedDocument.LayoutElement.Description}"
                                         TextTrimming="CharacterEllipsis"
                                         VerticalAlignment="Center">
                              </TextBlock>
                            </Grid>

                            <Grid Grid.Row="1">
                              <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="Auto" />
                                <ColumnDefinition />
                              </Grid.ColumnDefinitions>
                              <Grid Margin="5">
                                <Grid.RowDefinitions>
                                  <RowDefinition Height="Auto" />
                                  <RowDefinition />
                                </Grid.RowDefinitions>
                                <TextBlock Text="Active Tool Windows"
                                           FontWeight="Bold"
                                           Margin="0,3,0,4">
                                </TextBlock>
                                <ListBox x:Name="PART_AnchorableListBox"
                                         Grid.Row="1"
                                         ItemsSource="{Binding Anchorables}"
                                         SelectedItem="{Binding SelectedAnchorable, Mode=TwoWay}"
                                         Background="Transparent"
                                         BorderThickness="0"
                                         MaxHeight="400"
                                         FocusVisualStyle="{x:Null}">
                                  <ListBox.ItemContainerStyle>
                                    <Style TargetType="ListBoxItem">
                                      <Setter Property="Cursor"
                                              Value="Hand" />
                                      <Style.Triggers>
                                        <Trigger Property="IsMouseOver"
                                                 Value="True">
                                          <Setter Property="Background"
                                                  Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
                                          <Setter Property="TextElement.Foreground"
                                                  Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
                                        </Trigger>
                                      </Style.Triggers>
                                    </Style>
                                  </ListBox.ItemContainerStyle>
                                  <ListBox.ItemTemplate>
                                    <DataTemplate>
                                      <Grid>
                                        <Grid.ColumnDefinitions>
                                          <ColumnDefinition Width="Auto" />
                                          <ColumnDefinition />
                                        </Grid.ColumnDefinitions>
                                        <Image Source="{Binding LayoutElement.IconSource, Converter={StaticResource NullToDoNothingConverter}}"
                                               Stretch="None">
                                        </Image>
                                        <TextBlock Text="{Binding LayoutElement.Title}"
                                                   TextTrimming="CharacterEllipsis"
                                                   Grid.Column="1"
                                                   Margin="4,2,0,2">
                                        </TextBlock>
                                      </Grid>
                                    </DataTemplate>
                                  </ListBox.ItemTemplate>
                                </ListBox>
                              </Grid>
                              <Grid Grid.Column="1"
                                    Margin="5">
                                <Grid.RowDefinitions>
                                  <RowDefinition Height="Auto" />
                                  <RowDefinition />
                                </Grid.RowDefinitions>
                                <TextBlock Text="Active Files"
                                           FontWeight="Bold"
                                           Margin="0,3,0,4">
                                </TextBlock>
                                <ListBox x:Name="PART_DocumentListBox"
                                         Grid.Row="1"
                                         ItemsSource="{Binding Documents}"
                                         SelectedItem="{Binding SelectedDocument, Mode=TwoWay}"
                                         Background="Transparent"
                                         BorderThickness="0"
                                         MaxHeight="400"
                                         FocusVisualStyle="{x:Null}">
                                  <ListBox.ItemContainerStyle>
                                    <Style TargetType="ListBoxItem">
                                      <Setter Property="Cursor"
                                              Value="Hand" />
                                      <Style.Triggers>
                                        <Trigger Property="IsMouseOver"
                                                 Value="True">
                                          <Setter Property="Background"
                                                  Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}" />
                                          <Setter Property="TextElement.Foreground"
                                                  Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}" />
                                        </Trigger>
                                      </Style.Triggers>
                                    </Style>
                                  </ListBox.ItemContainerStyle>
                                  <ListBox.ItemTemplate>
                                    <DataTemplate>
                                      <Grid>
                                        <Grid.ColumnDefinitions>
                                          <ColumnDefinition Width="Auto" />
                                          <ColumnDefinition />
                                        </Grid.ColumnDefinitions>
                                        <Image Source="{Binding LayoutElement.IconSource, Converter={StaticResource NullToDoNothingConverter}}"
                                               Stretch="None">
                                        </Image>
                                        <TextBlock Text="{Binding LayoutElement.Title}"
                                                   TextTrimming="CharacterEllipsis"
                                                   Grid.Column="1"
                                                   Margin="4,2,0,2">
                                        </TextBlock>
                                      </Grid>
                                    </DataTemplate>
                                  </ListBox.ItemTemplate>
                                  <ListBox.ItemsPanel>
                                    <ItemsPanelTemplate>
                                      <WrapPanel Orientation="Vertical" />
                                    </ItemsPanelTemplate>
                                  </ListBox.ItemsPanel>
                                </ListBox>
                              </Grid>
                            </Grid>

                            <Grid Grid.Row="2">
                              <TextBlock Text="{Binding SelectedDocument.LayoutElement.ToolTip}"
                                         VerticalAlignment="Center">
                              </TextBlock>
                            </Grid>
                          </Grid>
                        </Border>
                      </Grid>
                      <ControlTemplate.Triggers>
                        <Trigger Property="SelectedDocument"
                                 Value="{x:Null}">
                          <Setter Property="Text"
                                  Value="{Binding SelectedAnchorable.LayoutElement.Title}"
                                  TargetName="selectedElementTitle" />
                          <Setter Property="Text"
                                  Value="{x:Null}"
                                  TargetName="selectedElementDescription" />
                        </Trigger>
                      </ControlTemplate.Triggers>
                    </ControlTemplate>
                  </Setter.Value>
</Setter>
...