そのビューのリソースにいくつかのデータテンプレートを含むビューがあります。(この特定のビューでのみ必要になるため、グローバルな場所に配置したくありません)
コンバーターで取得した値に基づいて、テンプレートを切り替えます。
public class SplitTemplateSelector : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
int splitCount = (int)value;
var _view = new IdtDetailView();
DataTemplate template;
if (splitCount == 1)
{
//(DataTemplate)_view.Resources["SingleSplitTemplate"];
template = (DataTemplate)_view.Resources.Where(w => w.Key.Equals("SingleSplitTemplate")).FirstOrDefault().Value;
}
else
{
template = (DataTemplate)_view.Resources.Where(w => w.Key.Equals("MultiSplitTemplate")).FirstOrDefault().Value;
}
return template;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException();
}
}
これは意図したとおりに機能しますが、新しいインスタンスを作成するためIdtDetailView()
、変数が適切に設定されていないなどの問題が発生します。したがって、私の質問は...
新しいIdtDetailViewを作成する必要がないように、このコンバーターを呼び出したビューを渡すかアクセスするにはどうすればよいですか?