使用DataTemplateSelector显示UserControl一次

时间:2013-04-22 12:07:21

标签: wpf c#-4.0 datatemplateselector

我有几个特定的​​用户控件来显示一些内容,例如简单的像Image,WebControl,还有两个复杂的特定自定义控件在画布上绘制。

现在我想使用DataTemplateSelector来处理不同的UserControls。我实际上使用了这个http://tech.pro/tutorial/807/wpf-tutorial-how-to-use-a-datatemplateselector作为参考。

我更改了代码,以便表单在以下集合中动态加载UserControls(根据文件扩展名):

ObservableCollection<string> _pathCollection = new ObservableCollection<string>();

与参考的唯一区别是现在我想通过仅在当时显示一个控件来向后导航到下一个控件。我应该使用哪种控件而不是ListView?

<Grid>
    <ListView ScrollViewer.CanContentScroll="False" 
              ItemsSource="{Binding ElementName=This, Path=PathCollection}" 
              ItemTemplateSelector="{StaticResource imgStringTemplateSelector}">
    </ListView>
 </Grid>

我如何将其绑定到模板(等于上面的ItemTemplateSelector)? WPF对我来说还是一个新手,我正在学习。

1 个答案:

答案 0 :(得分:0)

使用ContentControl。将当前项绑定到Content-property,将DataTemplateSelector绑定到ContentTemplateSelector属性。

<ContentControl Content="{Binding Path=CurrentItem, Mode=OneWay}", ContentTemplateSelector="{StaticResource imgStringTemplateSelector}" />

您的CurrentItem应该是DataContext的DependencyProperty或INotifyPropertyChanged属性。当您更改CurrentItem时,ContentControl将在TemplateSelector的帮助下自动更新模板。