目标:Windows应用商店 框架:MvvmCross
我将包含OtherViewModel的MyViewModel作为属性。
public class OtherViewModel : MvxViewModel
{
public string Name { get; set; }
}
public class MyViewModel : MvxViewModel
{
public string Id { get; set; }
private OtherViewModel _theOther;
public OtherViewModel TheOther
{
get { return _theOther; }
set
{
_theOther = value;
RaisePropertyChanged(() => TheOther);
}
}
}
当我使用以下View(XAML,简化))时,ContentPresenter的内容将始终为null(使用WinRTXamlToolkit.Debugging.DC.ShowVisualTree()进行调查)
<views:MvxStorePage>
<Grid>
<TextBlock Text="{Binding TheOther.Name}"/>
<ContentPresenter Content="{Binding TheOther}" ContentTemplate="{...}"/>
</Grid>
</views:MvxStorePage>
但是,当我按照以下方式定义视图(将Content绑定到TextBlock DataContext)时,它可以工作。
<views:MvxStorePage>
<Grid>
<TextBlock Name="tb" DataContext="{Binding TheOther}" Text="{Binding Name}"/>
<ContentPresenter Content="{Binding DataContext, ElementName=tb}" ContentTemplate="{...}"/>
</Grid>
</views:MvxStorePage>
知道为什么吗?
答案 0 :(得分:3)
ContentPresenter通常用于ControlTemplate。
改为使用ContentControl。
答案 1 :(得分:0)
您通常在a的ControlTemplate中使用ContentPresenter ContentControl指定要添加内容的位置。一切 ContentControl类型默认具有ContentPresenter 的ControlTemplate。
有关详细信息,请参阅此link