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 のプロパティを設定するにはどうすればよいですか?