2014-06-24 3 views
1

Visual Studio 2013에서 C#으로 WPF 프로그램을 만들고 있는데 리본 구성 요소를 사용하고 있습니다. 지금까지 리본 메뉴와 몇 개의 단추에 대해 XAML을 작성했으며대신에 using System.Windows.Controls.Ribbon;을 추가하고 RibbonWindow을 서브 클래 싱하여 C# 파일을 수정했습니다. 나는 Visual Studio for the Ribbon에 필요한 .dll에 대한 참조를 추가하는 것을 기억했다. 나는이 프로그램을 실행하면WPF 리본이 제목 표시 줄을 가린다

것은, 제목 표시 줄은 정말 위로가 적용됩니다 WPF, C# 및에 enter image description here

난 꽤 새로운 : enter image description here

는이처럼 보이게 HorizontalAlignment="Left"을 가지고있는 리본을 설정 비주얼 스튜디오, 그래서 나는 여기에 무엇이 잘못되었는지 전혀 모른다. 나는 (탭 그룹 및 응용 프로그램 메뉴를 생략) 아래에있는 내 XAML 코드를 붙여 넣은 :

<RibbonWindow 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:Custom="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon" x:Class="SwaagPaiNT.MainWindow" 
     Title="Swaag PaiNT" Height="350" Width="525"> 
    <Grid> 
     <Custom:Ribbon HorizontalAlignment="Stretch" VerticalAlignment="Top"> 
      <Custom:Ribbon.HelpPaneContent> 
       <Custom:RibbonButton Name="what" ToolTip="whachunee" /> 
      </Custom:Ribbon.HelpPaneContent> 

      <Custom:Ribbon.QuickAccessToolBar> 
       <Custom:RibbonQuickAccessToolBar> 
        <Custom:RibbonButton x:Name="SAVE" ToolTip="BLAZE IT"/> 
        <Custom:RibbonSplitButton x:Name="Undo"> 
         <Custom:RibbonSplitMenuItem Header="CANNOT UNDO MORE" /> 
        </Custom:RibbonSplitButton> 
       </Custom:RibbonQuickAccessToolBar> 
      </Custom:Ribbon.QuickAccessToolBar> 

     </Custom:Ribbon> 

    </Grid> 
</RibbonWindow> 

이 윈도우 7 프로페셔널 32 비트 시스템입니다.

답변

2

하지만 문제는 모든 것이 그려져 있어야한다는 것입니다. 리본은 닫기 버튼과 최소화 버튼에 대해 아무것도 모릅니다. 단지 페인트 할 공간이 있습니다.

모양과 동작을 변경하려면 을 사용하거나 user control을 만들거나 리본을 직접 서브 클래스로 만듭니다. 일반적인 방법은 아니지만 실제로는 컨트롤을 캡슐화하려는 경우가 있습니다.

<Window> 
    <Grid> 
     ... 
     <MyRibbon Grid.Row="0" .../> 
     <Ribbon Grid.Row="1" Template={StaticResource MyRibbonTemplate} .../> 
    </Grid> 
</Windows> 

편집 :

미안 해요, 난 조금 unattentive이고 RibbonWindow에보고하지 않았다. 실제로 RibbonWindow를 보거나 사용하지 않았습니다. 전에 작성한 것은 거의 완전히 잘못되었습니다. 그것을 가리켜 주셔서 감사합니다. 이제 문제.

이러한 행동은 그것이 있어야로 리본 컨트롤이 RibbonWindow와 통합되지 않았 음을 나타냅니다, 그래서 당신은 할 수 :

  1. 이 코드 대신에 MSDN 예를보십시오. 근본적인 차이는 보이지 않지만 누가 알 수 있습니까? 작동하는 경우 XAML 또는 코드 숨김에 간단한 문제가 있음을 알 수 있습니다. 그렇지 않으면 - 다음을 시도하십시오
  2. 대상 .NET 버전을 변경하십시오 (가능하면 시도하십시오).
  3. Windows에서 비주얼 스타일을 변경하십시오 (Aero 또는 Classic으로 단순화).
  4. Windows 클래스의 RibbonWindow에 대한 수동 상속 변경과 관련된 문제가있을 수 있습니다. Window의 코드 숨김 파일은 실제로 부분 클래스입니다. 그런 식으로 작동하는 방법을 모르겠지만 그 방향을 살펴 봐야합니다.

P .: 다음에 나중에 직접 시도해보고 결과를 작성하겠습니다.

편집 :

I 다운로드 한 리본 컨트롤 라이브러리는 .NET 4.5 비주얼 스튜디오 2013과 윈도우 8.1에서 MSDN 예제를 시도하고 - 모든 것이 괜찮 았는데. 그러나 대상 프레임 워크를 4.0으로 변경하면 Ribbon 컨트롤이 전체 줄을 제목으로 검게했습니다. 그럼에도 불구하고 나는 Win7에서 VS2010으로 예제를 시도 할 것이다.

편집 :

이러한 코드는 .NET 4.0을 대상으로 Win7에 VS2010에서 나를 위해 일한 :

<ribbon:RibbonWindow x:Class="SwaagPaiNT.MainWindow" 
     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" 
     Title="MainWindow" 
     x:Name="RibbonWindow" 
     Width="640" Height="480"> 

    <Grid x:Name="LayoutRoot"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto"/> 
      <RowDefinition Height="*"/> 
     </Grid.RowDefinitions> 

     <ribbon:Ribbon x:Name="Ribbon" Title="Ribbon Title"> 
      <ribbon:Ribbon.HelpPaneContent> 
       <ribbon:RibbonButton /> 
      </ribbon:Ribbon.HelpPaneContent> 
      <ribbon:Ribbon.QuickAccessToolBar> 
       <ribbon:RibbonQuickAccessToolBar > 
        <ribbon:RibbonButton x:Name="QATButton1"/> 
        <ribbon:RibbonButton x:Name="QATButton2" 
             /> 
       </ribbon:RibbonQuickAccessToolBar> 
      </ribbon:Ribbon.QuickAccessToolBar> 
      <ribbon:Ribbon.ApplicationMenu> 
       <ribbon:RibbonApplicationMenu > 
        <ribbon:RibbonApplicationMenuItem Header="Hello _Ribbon" 
                 x:Name="MenuItem1" 
                 /> 
       </ribbon:RibbonApplicationMenu> 
      </ribbon:Ribbon.ApplicationMenu> 
      <ribbon:RibbonTab x:Name="HomeTab" 
           Header="Home"> 
       <ribbon:RibbonGroup x:Name="Group1" 
            Header="Group1"> 
        <ribbon:RibbonButton x:Name="Button1" 

             Label="Button1" /> 
       </ribbon:RibbonGroup> 
      </ribbon:RibbonTab> 
     </ribbon:Ribbon> 
    </Grid> 
</ribbon:RibbonWindow> 

using Microsoft.Windows.Controls.Ribbon; 

namespace SwaagPaiNT 
{ 
    /// <summary> 
    /// Interaction logic for MainWindow.xaml 
    /// </summary> 
    public partial class MainWindow : RibbonWindow 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
     } 
    } 
} 

코드 사이의 유일한 차이하여

<RibbonWindow 
... 
xmlns:Custom="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon" 
에 위

코드에서 xml 스키마를 사용하여 MSDN에서 clr-namespace가 아닌 리본을 식별합니다. RibbonWin dow는 네임 스페이스 접두어없이 사용됩니다.

도움이되기를 바랍니다.

+0

감사합니다, Eugene. 나는 이것을 시도해 볼 것인데 (만약 내일이 아니라면 몇주 안에) 그것을 어떻게 작동하는지보십시오. 이 StartUpUri에 대해 읽고 템플릿을 찾아 보겠습니다. 그런데 다른 모든 것이 새로운 WPF 사용자를위한 것이 아니었기 때문에이 작업을 수행하고있었습니다.이 작업은 완전히 직관적이었습니다. http://www.c-sharpcorner.com/UploadFile/0b73e1/ribbon-control-in-wpf-4 -5/ – SimonT

+0

오해의 소지가 있습니다. 귀하의 문제를 이해하려고 노력하겠습니다. 그렇지 않다면 나는이 질문에 현상금을 책정 할 것이다. –

+0

아무런 해를 끼치 지 않았습니다. 최근에 너무 바빠서 너무 많이 생각하지 않았습니다. 몇 주 안에 (또는 내일 (다시)) 나는 당신의 편집을 시도 할 것입니다. 다시 감사합니다. – SimonT

관련 문제