考虑 Windows Phone SL 应用程序中可视化树的以下部分:
如您所见,PanoramaItem 模板包含对 static 的引用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
您可以在上面的图像上看到选择的创建。为了获得一致的布局,我需要能够设置它的垂直对齐属性。我似乎不知道该怎么做,因为我无法引用 this ContentPresenter
。如何设置 ContentPresenter 的属性?