2011-09-27 6 views
2

내 친구,(대화 창에서) 소유 윈도우의 컨트롤 속성에 바인딩하는 방법?

i WPF에서 해결할 수없는 문제가 있습니다. 두 Windows, MainwindowWindow1 있습니다. 내 자식 창의 ListView를 부모 윈도우의 컨트롤 속성에 바인딩하고 싶습니다. 구체적으로 :

MainWindow를은 또한 아래로,

<local:MyControl x:Name="View"/>

을 XAML에서 선언 된 컨트롤이 난이 '보기', 'Session.Events'의 공용 속성 (관찰 가능한 컬렉션에 의해 공급됩니다 얻을 목록보기) 잘 작동하지만 지금은 그런 방식으로 MainWindow를에서 양산 번째 윈도우가

<ListView ItemsSource="{Binding ElementName=View, Path=Session.Events}"/> 

:

Window1 MyWin1 = new Window1(); 
MyWin1.Owner = this; 
MyWin1.ShowDialog(); 

그리고이 두 번째 창에는 내 '보기'컨트롤로 먹이를 입력해야하는 ListView가 있습니다. 나는 바인딩을 통해 그것을하고 싶지만 내 치아를 물다. 내가 시험해 보는대로 작동하지 않습니다. 코드 숨김을 통해 작업 버전을 가지고 ...

Window1 Parent = (Window1)this.Owner; 
MyListView.ItemsSource = Parent.CCView.Session.Events; 

그러나 나는 XAML에서 바인딩을 수행하고 여분의 코드를 저장하는 것이 좋습니다. 또한 바인딩이 더 잘 이해되는 데 도움이되기를 바랍니다. 어떤 경우에는 여전히 미스테리입니다.

, 당신에게 너무 많은 내 안부 감사

답변

2

당신은 당신의 XAML의 논리적 트리를 통해 바인딩 할 수 있습니다. 두 번째 창은 첫 번째 창 트리의 일부가 아닙니다. 나는 현재 상황에서 가장 간단한 방법은 당신의 자식 창에 DataContext를 통해 전달해야한다고 생각 것 : 힌트에 대한

MyWin1 = new Window1 { 
    DataContext = this.DataContext, 
    Owner = this 
}; 
MyWin1.ShowDialog(); 
+0

안녕 FLQ, 감사합니다! 나는 그것을 포함 시켰지 만, 어떻게 Window1에서 실제 바인딩을 연습합니까? ItemsSource = "{바인딩 ElementName =보기, 경로 = Session.Events}"시도하고 다른 것들을 잔뜩하지만 그것을 얻을 수 없습니다 ... – hpalu

+0

흠, 당신은 DataContext를 사용하지 않는 것 같습니다? 그래도 바인딩이 무엇을 의미하는지 알 수 있습니다. 예를 들어 당신의 DataContext는 Session이고 바인딩은'{Binding Events}'입니다 - DataContext는 논리적 트리 – flq

+0

: D의 모든 것에서 상속받습니다. – hpalu

관련 문제