【发布时间】:2011-06-02 10:13:32
【问题描述】:
比如说,我有两个类:AppleViewModel 和 OrangeViewModel。我有AppleViewModel 和OrangeViewModel 中的ObservableCollection<object>。
还有两个对应的视图:AppleView和OrangeView。
在 app.xaml 中,有它们的 DataTemplates:
<Application.Resources>
<DataTemplate x:Key="AppleTemplate">
<local:AppleView/>
</DataTemplate>
<DataTemplate x:Key="OrangeTemplate">
<local:OrangeView/>
</DataTemplate>
</Application.Resources>
还有一个转换器以防万一:
public class MyContentConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if(value is AppleViewModel)
return Application.Current.Resources["AppleTemplate"] as DataTemplate;
else if (value is OrangeViewModel)
return Application.Current.Resources["OrangeTemplate"] as DataTemplate;
else return null;
}
}
引用:
<phone:PhoneApplicationPage.Resources>
<local:MyContentConverter x:Key="cConverter"/>
</phone:PhoneApplicationPage.Resources>
这是<ListBox/>:
<ListBox ItemsSource="{Binding Fruits}" >
<ListBox.ItemTemplate>
<DataTemplate>
<ContentControl ContentTemplate="{Binding Converter={StaticResource cConverter}}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
它只显示空白屏幕。如何修复它,以便列表框显示苹果和橙子的不同视图?
【问题讨论】:
-
意识到这是一篇较旧的帖子,但 silverlight 5 现在有隐式数据模板 jesseliberty.com/2011/04/21/…
标签: silverlight data-binding mvvm windows-phone-7