FindAncestor,我正在尝试绑定元素local:ItemPresenter属性EndDate。 EndDate在local:Presenter中定义。但它并没有将EndDate的值绑定在Element上。
<Style TargetType="{x:Type local:Presenter}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Presenter}">
<ItemsControl ItemsSource="{TemplateBinding ItemsSource}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Resources>
<!-- more Typed DataTemplates -->
<DataTemplate DataType="{x:Type item:ItemSubProjects}">
<local:ItemPresenter
EndDate="{Binding EndDate, RelativeSource={RelativeSource FindAncestor, AncestorType=local:Presenter}}">
</local:ItemPresenter>
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
有什么想法吗?
答案 0 :(得分:0)
明确指出绑定中的DataContext
可能会对您有所帮助
答案 1 :(得分:0)
您不需要x:Type
绑定此处,您只需传递该类型即可。此外,您尚未将模式指定为相对源绑定。
此外,您可能还想将ItemPresenter属性设置移动到样式。
试试这个。
<Style TargetType="{x:Type local:ItemPresenter">
<Setter Property="EndDate" Value="{Binding EndDate, RelativeSource={RelativeSource FindAncestor, AncestorType=local:Presenter}" />
</Style>
<Style TargetType="{x:Type local:Presenter}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type local:Presenter}">
<ItemsControl ItemsSource="{TemplateBinding ItemsSource}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Content="{Binding}">
<ContentControl.Resources>
<!-- more Typed DataTemplates -->
<DataTemplate DataType="{x:Type item:ItemSubProjects}">
<local:ItemPresenter />
</DataTemplate>
</ContentControl.Resources>
</ContentControl>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>