안에, 내가있어 UserControl
(LayoutUserControl)를 사용하여 레이아웃 객체 : 우리가 레이아웃 컬렉션에 개체를 추가 할 때부모 - 자식 내 MainWindow를에서 DataTemplate을
<DataTemplate DataType="{x:Type local:Layout}">
<local:LayoutUserControl />
</DataTemplate>
, 우리는 새로운 LayoutUserControls이 목록 상자를 채울 참조하십시오. 이것은 꽤 솔직합니다.
이제, 어떻게하고 싶은지, 어떻게 든 MainWindow에서 개별 LayoutUserControls로 통신합니다. 특히, MainWindow에서 LayoutUserControls 각각에 대해 하나의 메서드를 호출하려고합니다 ... ListBox의 Items 컬렉션을 반복 할 경우 LayoutUserControls가 아닌 Layout 개체에 대한 참조 만 얻습니다. LayoutUserControls는 DataTemplate에 정의되어 있으므로 액세스하기 위해 명명 된 참조가 없습니다. ...
부모 컨트롤에서 자식 컨트롤로 이러한 유형의 상호 작용을 지원하는 WPF 구문이 있습니까? RoutedEvents는 처음 생각했지만 부모와 자식 사이의 의사 소통 만 지원합니다. 아마도 명령은 갈 길입니까?
도움을 주시면 감사하겠습니다.
감사합니다.
신속한 의견을 보내 주셔서 감사합니다. 가능한 경우 '구식'이벤트 등록을하지 않으려합니다. LayoutUserControl에서 간단한 ICommand를 노출 할 수 있다고 확신합니다. 어떻게 바인딩하고 MainWindow에서 호출 할 수 있습니까? 공유 할 수있는 참조 또는 예는 무엇입니까? –
@JohnRussell : 명령은 일반적으로 데이터에 대한 것이므로 원하는 데이터는 UI에 대한 데이터이므로 이전 학교 이벤트를 사용하는 것이 훨씬 쉽습니다. 명령을 사용하면 확실하게 어떻게 든 작동 할 수는 있지만 좋은 방법은 배트에서 바로 사용할 수는 없지만 너무 자세히 살펴 볼 것입니다 ... –
Ah. 자, 내가 어디로 가는지 알 것 같아. 내가 틀렸다면 나를 바로 잡아라. 레이아웃 객체에 메서드를 추가하고 OnRaiseEvent()를 호출 할 수 있습니다. 내 MainWindow에서 컬렉션의 각 레이아웃에 대해 호출됩니다. Layout 객체에서 OnRaiseEvent는 내 작업을 수행하기 위해 LayoutUserControl에 이벤트를 발생시킵니다. 니가 말하는거야? –