0

我有几个特定的​​用户控件来显示一些内容,例如简单的图像、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 对我来说仍然很新,我正在学习。

4

1 回答 1

0

使用内容控件。将当前项目绑定到 Content-property,将 DataTemplateSelector 绑定到 ContentTemplateSelector-property。

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

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

于 2013-04-22T12:22:02.630 回答