在我的 Silverlight 项目中,我需要使用DataTemplateSelector
. 我在这里找到了一种实现方法(因为它不存在于框架中):http: //www.codeproject.com/KB/silverlight/SLTemplateSelector.aspx
此方法在我的代码的其他地方一直可以正常工作,但这次它不起作用。问题是 TemplateSelector 从未被调用(我什至试图在构造函数中放置一个断点,但它从未被命中)。你能在我的代码中看到问题吗?我使用了调试转换器,可以看到我ListBox
的 'sItemsSource
设置正确。
提前致谢 !
XAML:
<ListBox Name="DestinationsList" Grid.Column="2" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<helper:TargetTemplateSelector Content="{Binding}">
<helper:TargetTemplateSelector.FirstTemplate>
<DataTemplate>
<TextBlock Text="Test1" />
</DataTemplate>
</helper:TargetTemplateSelector.FirstTemplate>
<helper:TargetTemplateSelector.SecondTemplate>
<DataTemplate>
<TextBlock Text="Test2" />
</DataTemplate>
</helper:TargetTemplateSelector.SecondTemplate>
</helper:TargetTemplateSelector>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
模板选择器类:
public class TargetTemplateSelector : DataTemplateSelector
{
public DataTemplate FirstTemplate { get; set; }
public DataTemplate SecondTemplate { get; set; }
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
MyClass1 target = item as MyClass1;
if (target != null)
{
if (target.Profile is MyClass2)
{
return this.FirstTemplate;
}
else if (target.Profile is MyClass3)
{
return this.SecondTemplate;
}
else
{
throw new NotImplementedException();
}
}
return base.SelectTemplate(item, container);
}
}