【发布时间】:2011-07-07 14:11:57
【问题描述】:
我有一个用户控件,它基于类似的 DataTemplates 动态嵌入了许多其他控件。
我的控件有一个 ViewModel,它具有托管子控件的 DataContext 和 ContentTemplate 的可绑定属性。但是,当我运行模板绑定并初始化时,即使使用 DataContextChanged 事件,DataContext 也永远不会被拾取。
<ContentControl Name="SessionControl1" DataContext="{Binding SessionItem1}" ContentTemplate="{Binding Source={StaticResource ViewModel},Path=Session1Template}" />
现在作为测试,我采用了我想要的一个可切换控件 (AudioCard.xaml) 并尝试直接在同一个地方使用它,如下所示:
<local:AudioCard DataContext="{Binding SessionItem1}" />
这很好用,控件的初始化就像在动态情况下一样,并且 DataContextChanged 事件使用正确的绑定触发。这让我认为在 ContentControl 中绑定到 DataContext 不起作用。
两个问题: 1) 有没有简单的方法来修复它?
2) 有更好的方法吗?
编辑:根据第一个答案,我将代码更改为如下所示:
<ContentControl Name="SessionControl1" Grid.Row="0" Grid.Column="0" ClipToBounds="False" Height="128" Width="128"
DataContext="{Binding SessionItem1}"
ContentTemplateSelector="{StaticResource ProximitySessionCardTemplateSelector}" />
我可以看到代码进入我的内容模板选择器,但我在选择器中的对象是空的。我应该绑定其他东西吗?
【问题讨论】:
标签: wpf data-binding controls