【发布时间】:2015-01-23 03:44:39
【问题描述】:
我有一个 Windows 8.1 应用程序。我需要根据某个值选择不同的模板。为此,我在带有静态资源模板选择器的 xaml 中使用 ContentPresenter。
这是我在 xaml 资源中的数据模板和模板选择器
<DataTemplate x:Key="template1">
<TextBox Text="Temp 1" />
</DataTemplate>
<DataTemplate x:Key="template2">
<TextBox Text="Temp 2" />
</DataTemplate>
<DataTemplate x:Key="template3">
<TextBox Text="Temp 3" />
</DataTemplate>
<template:BalanceTypesTemplateSelector x:Key="MySelector"
Template1="{StaticResource template1}"
Template2="{StaticResource template2}"
Template3="{StaticResource template3}" />
这是我的 ContentPresenter XAML
<ContentPresenter ContentTemplateSelector="{StaticResource MySelector}"
Content="{Binding MyData}" />
这是我的模板选择器代码
public class BalanceTypesTemplateSelector : DataTemplateSelector
{
public DataTemplate Template1 { get; set; }
public DataTemplate Template2 { get; set; }
public DataTemplate Template3 { get; set; }
protected override DataTemplate SelectTemplateCore(object item)
{
var type = item.ToString();
switch (type)
{
case "t1":
return Template1;
case "t2":
return Template1;
case "t3":
return Template3;
default:
throw new NotSupportedException();
}
}
return null;
}
}
但它根本没有命中模板选择器代码。当我运行应用程序时,绑定的字符串直接显示在显示屏上。
如果有人指出我正确的方向,我会很高兴。提前致谢。
【问题讨论】:
-
你能试试 ContentControl 代替 ContentPresenter 吗?
标签: xaml winrt-xaml windows-8.1 win-universal-app