WPF - 使用DataTemplates将数据绑定到StackPanel

Ron*_*ald 10 data-binding wpf datatemplate

我已经修改了我的问题,因为它在尝试时已经改变了焦点.我把问题缩小到以下......

我尝试将TreeView的选定项绑定到StackPanel(或其他一些可以容纳用户控件的容器).然后,此容器将显示UserControl,具体取决于所选项目的类型.

这是StackPanel的xaml(树视图和stackpanel都在同一个窗口中==>不同的网格列)

<StackPanel Grid.Column="2" MinWidth="500" DataContext="{Binding ElementName=myTree, Path=SelectedItem, Mode=OneWay}">
    <StackPanel.Resources>
        <DataTemplate DataType="{x:Type mvTypes:MyTypeA}">
            <controls:UserControlA DataContext="{Binding}" />
        </DataTemplate>
        <DataTemplate DataType="{x:Type mvTypes:MyTypeB}">
            <controls:UserControlB DataContext="{Binding}" />
        </DataTemplate>
    </StackPanel.Resources>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

当我将用户控件直接放在stackpanel下(而不是在资源中)时,它会将所选对象显示为datacontext.同上,如果我在其中放置一个TextBox,它将显示所选项目的正确类型.

<TextBox Name="textBox1" Text="{Binding}" />
Run Code Online (Sandbox Code Playgroud)

出于某种原因,将其放在DataTemplate中(即使不设置DataType)也不会显示任何内容.

任何sugestions.我想也许StackPanel可能不适合这个,虽然我似乎找不到其他适合像这样的容器的控件.

提前致谢.

Bry*_*son 11

使用ContentPresenter替换示例中的StackPanel,而不是DataContext设置Content属性.这应该工作.