Как скрыть строку заголовка в окне ленты WPF (Aero включена) без скрытого поля управления? - PullRequest
4 голосов
/ 26 июля 2011

В настоящее время я использую окно ленты WPF и включаю Aero в текущем окне, как показано на следующем фото.Мне нравится скрывать заголовок «Шаблонный тестер», потому что недостаточно места для его отображения.Но мне все же нужен оригинальный блок управления Windows и текущий заголовок (даже если он будет скрыт), который будет отображаться в диспетчере задач и других связанных программах, таких как переключатель задач и панель задач.

WPF Ribbon Window

Ответы [ 2 ]

4 голосов
/ 26 июля 2011

Я случайно нашел ответ на этот вопрос, когда прочитал и скачал исходный код в теме о Текст в строке заголовка WPF, плохо читаемый в RibbonWindow .Самый простой способ решить эту проблему - просто скрыть элемент управления панели заголовка ленты через словарь ресурсов приложения.

 <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:ribbon="clr-namespace:Microsoft.Windows.Controls.Ribbon;assembly=RibbonControlsLibrary"
            xmlns:ribbonPre="clr-namespace:Microsoft.Windows.Controls.Ribbon.Primitives;assembly=RibbonControlsLibrary">
    <Style TargetType="{x:Type ribbonPre:RibbonTitlePanel}">
        <Setter Property="Visibility" Value="Hidden"/>
    </Style>
 </ResourceDictionary>

enter image description here

Однако контекстная вкладка ленты также скрыта.Чтобы исправить эту ошибку, я должен установить содержимое Content Presenter панели заголовка ленты на пустую строку при загрузке текущего окна.

private void Window_Loaded(object sender, RoutedEventArgs e)
{
    var titlePanel = Ribbon.Template.FindName("PART_TitleHost", Ribbon) as ContentPresenter;
    if (titlePanel != null)
    {
        titlePanel.Content = "";
    }
}

enter image description here

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

<Style TargetType="{x:Type ribbonPre:RibbonTitlePanel}">
    <Setter Property="ContentPresenter.Content" Value=""/>
</Style>
2 голосов
/ 08 апреля 2016

В событие загрузки окна добавьте следующую строку:

((System.Windows.UIElement) ((System.Windows.FrameworkElement) (this.RibbonMain.Template.FindName ("PART_TitleHost", this.RibbonMain) как ContentPresenter) .Parent) .Parent) .Visibility = Visibility. рухнул;

...