2011-12-08 16 views
1

저는 처음으로 WPF 및 XAML을 탐색 중이며 아직 이해할 수없는 부분이 많습니다. 난 내 자신의 프로젝트를 만든 http://www.codeproject.com/KB/WPF/AvalonDockMVVM.aspxCommandBinding을 해결할 수 없습니다.

및 AvalonDockMVVM에서 코드를 추가하려고 오전 :

나는이를 통해 일하고 있어요.

현재 메뉴를 구성하려고합니다. MainWindow.xaml에서

는, 내가 추가 한 :

<Window.Resources> 
    <RoutedUICommand x:Key="Commands.Exit" /> 
</Window.Resources> 

<Window.CommandBindings> 
    <CommandBinding Command="{StaticResource Commands.Exit}" Executed="Exit_Executed" /> 
</Window.CommandBindings> 

<DockPanel> 
    <Menu DockPanel.Dock="Top"> 
     <MenuItem Header="_File"> 
      <MenuItem Header="_Exit" Command="{StaticResource Commands.Exit}" /> 
     </MenuItem> 
    </Menu> 
    ... 
</DockPanel> 

아이디어는 하나의 "종료"옵션 메뉴를 구성하는 것입니다.

이제 내가 말했듯이, 나는 내가하는 일을 거의 알지 못합니다. 그러나 나는 <RoutedUICommand>이 명령을 만들고있는 것처럼 보입니다. <CommandBinding>은 코드 숨김의 ExitExecuted() 메서드에 바인딩하고, <MenuItem>은 해당 메뉴 항목을 선택할 때 그 명령에 묶여있는 것이 무엇이든지.

AvalonDockMVVM 프로젝트에서 모두 정상적으로 작동합니다. 광산에서 {StaticResource Commands.Exit}에 오류가 있습니다 : Commands.Exit 리소스를 확인할 수 없습니다.

XAML의 <RoutedUICommand> 요소 외에 Commands.Exit를 정의하는 코드 또는 구성의 어딘가에 있다고 생각합니다. 하지만 내 인생에서 나는 그것을 발견 할 수 없다.

명령을 통해 메뉴에 메서드를 바인딩하기 위해 내가해야 할 다른 것이 있습니까?

+0

나는 더 많은 코드를 추가했습니다. 정확하게 말해서 MainWindowViewModel을 추가했습니다. 이제이 문제가 해결됩니다. 어느 날 나를 혼란스럽게 만든다. 보기 모델에는 이탈과 관련이 없습니다. –

답변

0

위 예제를 새로운 WPF 프로젝트에 그대로 복사했습니다. 단순히 타원을 제거하고 exit 명령을 처리하는 코드 숨김 메소드를 추가하기 만하면됩니다. 그것은 정상적으로 실행되었고 명령을 해결하는 데 아무런 문제가 없었습니다. 여기 내 전체이며 완성 된 XAML

<Window x:Class="WPFTest.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Window.Resources> 
     <RoutedUICommand x:Key="Commands.Exit" /> 
    </Window.Resources> 

    <Window.CommandBindings> 
     <CommandBinding Command="{StaticResource Commands.Exit}" Executed="Exit_Executed" /> 
    </Window.CommandBindings> 
    <DockPanel> 
     <Menu DockPanel.Dock="Top"> 
      <MenuItem Header="_File"> 
       <MenuItem Header="_Exit" Command="{StaticResource Commands.Exit}" /> 
      </MenuItem> 
     </Menu> 
    </DockPanel> 
</Window> 

리소스를 해결하는 데 문제가있는 곳은 두 곳입니다. 먼저 프로젝트 수준의 정적 리소스가 "Commands.Exit"키 (또는 페이지 아래쪽의 다른 리소스)로 정의되어 있는지 확인하십시오. 둘째, 코드가 < 위의 코드가 RoutedUICommand > 또는 < 인 지 확인합니다. Window.Resources >에는 닫히지 않은 태그가 있습니다. 그 구문 오류를 던져야하지만 어쩌면?

0

시도해보십시오. 리소스 키 사용. <RoutedUICommand x:Key="CommandsExit" />

여기에서 언급 한 동일한 코드를 시도했는데 VS2010 + .Net4.0..에서 작동합니다. Expression Blend에서 열려고 시도 할 수 있습니까?

+0

키의 도트는 프로젝트에서 작동하므로 내에서 작동해야합니다. 그러나 나는 그것을 시험해 보았다. 그리고 그것은 효과가 없었다. –

관련 문제