2010-04-04 2 views
4

기본 창 크기를 줄이려면 설정 창에 사각형이 있어야합니다. 이것은 제가 지금 가지고있는 작동하지 않는 코드입니다. 내가하고 싶은 일을 할 수 있습니까?WPF 시각적 브러시의 시각적 속성을 다른 창에 바인딩

<Rectangle.Fill> 
<VisualBrush Stretch="Uniform" Visual="{Binding ElementName=local:MainWindow}" /> 
</Rectangle.Fill> 

답변

6

예 (순수 XAML은 아니지만 ElementName을 사용하지 않음). 대신 기본 창에 대한 참조를 설정 창으로 전달해야합니다. 그런 다음 VisualBrush.Visual을 해당 참조에 바인딩 할 수 있습니다. MainWindow를가 SettingsWindow의 지금 때문에

// MainWindow.xaml.cs 
SettingsWindow w = new SettingsWindow { DataContext = this }; 
w.Show(); 

그런 다음 SettingsWindow 당신이 ({Binding}으로 MainWindow를 액세스 할 수 있습니다 : 설정 창을 만들 때, 당신은 메인 창에 자신의 DataContext를 설정할 수 있습니다 간단한 예를 들어

DataContext를, 그리고 {Binding})는 DataContext를 참조합니다 그건 너무 무딘 때문에

가 실제로
<!-- SettingsWindow.xaml --> 
<Rectangle.Fill> 
    <VisualBrush Stretch="Uniform" Visual="{Binding}" /> 
</Rectangle.Fill> 

당신은 아마의 DataContext로 메인 창 개체를 전달 싶지 않을 것이다 희망을 갖고 이것은 당신에게 아이디어를 준다.

+0

멍청한 질문이지만 "너무 멍청한 악기이기 때문에 주 창 개체를 DataContext로 전달하고 싶지 않을 것입니다"라는 말은 무엇을 의미합니까? 나는 무엇을 통과해야합니까? – Justin

+0

문제는 MainWindow에 DataContext를 설정하면 DataContext로 다른 것을 설정할 수 없다는 것입니다. 특히, 설정 윈도우가 일종의 설정 객체에 바인딩되기를 원하기 때문에 아마도 설정 객체가 DataContext ... 또는 적어도 DataContext의 일부가되기를 원할 것입니다. WPF의 관용적 인 솔루션은 뷰 (이 경우 MainWindow 비주얼 및 설정 객체)에 필요한 모든 정보를 포함하는 "뷰 모델"클래스를 만들고이 "뷰 모델"에 DataContext를 설정하는 것입니다. 희망은 지금 조금 더 의미가 있습니다! – itowlson

+0

있습니다. 고마워요! – Justin

관련 문제