【发布时间】:2011-11-12 12:52:50
【问题描述】:
考虑 Windows Phone SL 应用程序中可视化树的以下部分:
如您所见,PanoramaItem 模板包含对静态DataTemplateSelector 的引用。它是一个简单的类,它根据提供的 Key 动态地提供数据模板,以显示以 DataContext 到 PanoramaItem 提供的不同视图模型的不同视图。这是它的代码:
public static T FindResource<T>(this DependencyObject initial, string key) where T : DependencyObject
{
DependencyObject current = initial;
while (current != null)
{
if (current is FrameworkElement)
{
if ((current as FrameworkElement).Resources.Contains(key))
{
return (T)(current as FrameworkElement).Resources[key];
}
}
current = VisualTreeHelper.GetParent(current);
}
if (Application.Current.Resources.Contains(key))
{
return (T)Application.Current.Resources[key];
}
return default(T);
}
}
public class DataTemplateSelector : ContentControl
{
protected override void OnContentChanged(object oldContent, object newContent)
{
ContentTemplate = this.FindResource<DataTemplate>(newContent.GetType().FullName);
}
}
问题是我无法控制ContentPresenter 的创建,您可以在上面的图片中看到已选中。为了获得一致的布局,我需要能够设置它的垂直对齐属性。我似乎不知道该怎么做,因为我无法引用此ContentPresenter。如何设置 ContentPresenter 的属性?
【问题讨论】:
标签: silverlight windows-phone-7 contentpresenter visual-tree