좋아 ... 나는 아이 ItemsControl에 데이터 템플릿 내부에서 부모의 ItemsControl의 속성을 결합 할 수 있어야합니다 :는 WPF 아동 ItemsControl에 데이터 템플릿의 내부에서 부모 ItemsControl에 바인딩
<ItemsControl ItemsSource="{Binding Path=MyParentCollection, UpdateSourceTrigger=PropertyChanged}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ItemsControl ItemsSource="{Binding Path=MySubCollection}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=MyParentCollection.Value, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
다음과 같은 유형 인의 그 MyParentCollection (외부 모음)을 가정 해 봅시다 :
public class MyObject
{
public String Value { get; set; }
public List<MyChildObject> MySubCollection { get; set;
}
을 그리고 위의 클래스는 다음과 같은 유형 인에서의 그 MyChildObject을 가정 해 봅시다 :
public class MyChildObject
{
public String Name { get; set; }
}
내부 데이터 템플릿의 내부에서 MyParentCollection.Value에 어떻게 바인딩 할 수 있습니까? FindAncestor를 모두 유형별로 사용할 수는 없습니다. 왜냐하면 두 레벨 모두 동일한 유형을 사용하기 때문입니다. 아마도 외부 컬렉션에 이름을 넣고 내부 바인딩에 ElementName 태그를 사용할 수 있지만 속성을 확인할 수 없다고 생각했습니다.
의견이 있으십니까? 나는 ItemsControl에이
<DataTemplate>
<ItemsControl ItemsSource="{Binding Path=MySubCollection}" Tag="{Binding .}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Tag.Value, RelativeSource={RelativeSource AncestorType={x:Type ItemsControl}}}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
는 테스트하지 작동하지만, 올바른 방향으로 당신에게 힌트를 줄 수 ...
FindAncestor 모드를 사용할 수없고 유형 및 조상 수준을 모두 지정할 수 없습니까? –
흠, 조상 수준조차 생각조차하지 않았다 ... 나는 그걸 보겠다 –
잘 작동하지 않는 것 같아요. 오, 잘. –