2014-10-29 2 views
0

뷰의 코드 (.cs)에서 종속성 속성을 정의 했으므로 뷰 모델의 값을 바인딩하려고합니다. .xaml에 가서 Window가 정의 된 최상위 섹션에서 바인드하고 DataContext, Title 등과 같은 다른 속성이 채워지기를 바랬습니다. 거기에 나타나는 유일한 속성은 기본 Window 유형의 속성이고 내가 작업중인 뷰의 특정 인스턴스가 아니기 때문에 이것이 불가능한 것 같습니다.보기의 XAML에서 창 수준 종속성 속성 (보기 코드 숨김)을 바인딩 할 수 있습니까?

내가 원했던 이유는 내 ViewModel에서 명령을 정의한 경우 내보기의 코드에서 해당 명령을 시작하고 싶었 기 때문입니다. 명령에 대한 핸들을 얻기 위해 특정 ViewModel 유형에 DataContext를 캐스팅하지 않으려합니다. 분명히 메시지를 보낼 수 있습니다 (MVVM Light를 사용하고 있습니다). 이렇게하면 종속성 속성을 통해 메시징을하지 않고도 할 수있는 것처럼 보입니다.

답변

3

아래와 같이 스타일 설정기를 통해 바인딩을 설정할 수 있습니다. Setter Property의 정식 속성 이름에 유의하십시오. local:MainWindow을 스타일의 TargetType으로 설정하여 정규화 된 속성 이름을 피할 수도 있지만 XAML 디자이너가 이에 대해 불평 할 수 있습니다.

<Window x:Class="SomeNamespace.MainWindow" 
     xmlns:local="clr-namespace:SomeNamespace" ...> 
    <Window.Style> 
     <Style> 
      <Setter Property="local:MainWindow.SomeProperty" 
        Value="{Binding ViewModelProperty}"/> 
     </Style> 
    </Window.Style> 
    ... 
</Window>