2015-11-22 229 views
5

我的RibbonWindow桌面應用程序在Windows 10的兩側上顯示一個厚的黑色邊框。您可以通過顯示RibbonWindow的簡單WPF應用程序來重現此情況。邊框是不是顯示在Windows 8.x右邊和左邊的厚邊框

有誰知道,如何刪除邊框?

enter image description here

有些人問上msdn類似的問題,而答案「這是一個已知的問題」。但遵循提供的link我找不到任何具體的。

那麼有人能幫助我嗎?

編輯:如果窗口未激活,則邊框的顏色爲黑色。如果該窗口處於活動狀態,則邊框將從自定義窗口重音顏色中獲取顏色。

+0

根據您所提供它看起來的鏈接像它只是,'已知問題'。另一張海報稱,不使用RibbonWindow,因爲它非常過時。在查看了RibbonWindow的一些問題之後,看起來微軟已經關閉了很多這些問題,並將它們設置爲「無法修復」,儘管它們是相對嚴重的問題。這可能是RibbonWindow正在被棄用的方式。 – Danielle

+0

至少RibbonWindow尚未棄用。在鏈接之後,沒有描述「邊界錯誤」。只有:*當窗口處於最大化模式時,窗口內容(客戶端區域)被裁剪。 *窗口邊框太薄。 * QuickAccessToolbar的頂部沒有足夠的「邊距」。 *窗口標題模糊,頂部沒有足夠的「邊距」。 – gReX

+0

https://connect.microsoft.com/VisualStudio/Feedback/Details/1263145 – gReX

回答

1

考慮使用WindowChromeGlassFrameThickness = GlassFrameCompleteThickness

這不是一個理想的解決方案 - 您必須小心地爲窗口標題騰出空間,以及最大化,最小化和關閉按鈕。這就是說,它確實消除了你正在處理的邊界問題。

有關如何在WindowChrome正在使用時管理內容佈局的示例,請參閱this解答。

這是一個完整的XAML也應該有所幫助:

<RibbonWindow x:Class="RibbonTest.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
     xmlns:local="clr-namespace:RibbonTest" 
       xmlns:shell="clr-namespace:System.Windows.Shell;assembly=PresentationFramework" 
     mc:Ignorable="d" 
     Title="RibbonWindow" Height="350" Width="525"> 
    <WindowChrome.WindowChrome> 
     <WindowChrome GlassFrameThickness="{x:Static shell:WindowChrome.GlassFrameCompleteThickness}"/> 
    </WindowChrome.WindowChrome> 
    <Window.Template> 
     <ControlTemplate> 
      <Grid> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="30"/> 
        <RowDefinition Height="1*"/> 
       </Grid.RowDefinitions> 

       <!-- Opacity of < 1.0 helps show the minimize, maximize and close buttons --> 
       <Border Grid.Row="0" Background="Wheat" Opacity="0.8"> 
        <Grid> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="30" /> 
          <ColumnDefinition Width="1*"/> 
         </Grid.ColumnDefinitions> 


         <!-- Window Title - Center Aligned --> 
         <TextBlock 
          Grid.Column="1" 
          TextAlignment="Center" 
          VerticalAlignment="Center" 
          Text="{Binding Title, RelativeSource={RelativeSource TemplatedParent}}" /> 

        </Grid> 
       </Border> 

       <!-- This is the Window's main content area --> 
       <!-- Top margin 44 = WindowChrome ResizeBorderThickness (4) + CaptionHeight(40) --> 
       <!-- Bottom margin 1 is somewhat arbitrary --> 
       <Border Grid.Row="1" Background="White" Opacity="0.5"> 
        <ContentPresenter Content="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"/> 
       </Border> 
      </Grid> 
     </ControlTemplate> 
    </Window.Template> 
    <Grid> 
     <Border Background="Cyan" BorderBrush="BlanchedAlmond" BorderThickness="5"> 
      <Label FontSize="80" HorizontalAlignment="Center" VerticalAlignment="Center">Hello World</Label> 
     </Border> 
    </Grid> 
</RibbonWindow> 

產生的RibbonWindow會是這個樣子:

enter image description here

+0

非常好。它適用於我的示例項目:-)。而是將Boarder設置爲小麥我將它綁定到{DynamicResource {x:Static SystemColors.ActiveBorderBrush}}。檢查對我的風格的影響。 – gReX