考慮了Windows Phone SL應用的視覺樹下面的部分屬性:設置的自動生成的ContentPresenter
正如你所看到的,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的屬性?
謝謝你的提示。儘管我需要設置DataTemplateSelector(簡稱DTS)以下的ContentPresenter的值,但不是它的父級。目標ContentPresenter是從ContentControl派生的所有類的默認元素(DTS派生自ContentControl),我猜可以通過重新定義DataTemplateSelector的默認ControlTemplate來改變。我找到了一個如何在XAML中使用它的例子,但是DTS是一個代碼唯一的控件,在這種情況下我不知道如何解決。 –