从ItemsControl.ItemTemplate内部绑定到ItemsControl的模板化父级

时间:2011-09-22 21:52:14

标签: wpf xaml data-binding itemscontrol

从ItemsControl.ItemTemplate中绑定到ItemsControl的Parent的正确方法是什么?

非工作尝试:

<ControlTemplate TargetType="{x:Type local:ParentUserControl}">
        <ItemsControl ItemsSource="{Binding MyCollectionViewSource.View, RelativeSource={RelativeSource TemplatedParent}}"
                  IsTabStop="False"
                  Focusable="False">
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <local:ChildUserControl BoundProp1="{Binding Prop1}"
                     BoundObjProp2="{Binding RelativeSource={RelativeSource    
                     Mode=FindAncestor, 
                     AncestorType={x:Type local:ParentUserControl}}}"/>
                </DataTemplate>
            </ItemsControl.ItemTemplate>    
        </ItemsControl>
</ControlTemplate>

3 个答案:

答案 0 :(得分:1)

绑定对我来说很好,但你没有指定Binding.Path,你确定要直接绑定到控件而不是属性吗?

答案 1 :(得分:1)

我有类似的要求,以下内容对我有用:

<ItemsControl ItemsSource="{Binding Items}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapGrid Orientation="Horizontal" ItemWidth="{Binding ItemWidth}" ItemHeight="{Binding ItemHeight}"/>
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemTemplate>
        <DataTemplate >
            <views:MyUserControl
                Width="{Binding DataContext.ItemWidth, ElementName=PageRoot}"
                Height="{Binding DataContext.ItemHeight, ElementName=PageRoot}"/>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

P.S。我的应用程序是在XAML for WinRT

答案 2 :(得分:0)

我还没有找到解决这个问题的方法。最后,我不得不使用违反我想要的问题分离的工作,但按预期运行。我相信这归结为wpf框架中的一个问题,希望4.5能解决它。