WPF向导工具包ItemsSource绑定到List

3
我将实现MVVM模式,并希望使用WPF Toolkit的向导控件(Xceed.Wpf.Toolkit)设计我的界面。
我想要做的是将Wizard的Item Source绑定到List,并使用DataTemplate将其显示为页面。到目前为止,没有成功。 :-(
我已经尽可能地简化了代码,但这是它的主要部分。
我的视图XAML:
<xctk:Wizard FinishButtonClosesWindow="True" ItemsSource="{Binding Pages}" />

我的数据模板:

<DataTemplate DataType="{x:Type vm:ViewModelBase}">
    <xctk:WizardPage Title="{Binding DisplayName}" Description="{Binding DisplayDescription}"/>
</DataTemplate>

在cs文件中: 定义了返回列表的VM属性:
public List<ViewModelBase> Pages

在 app.xaml.cs 文件中:
var viewModel = new ViewModels.winMainViewModel();
winMain window = new winMain();

window.DataContext = viewModel;
window.Show();

抛出的错误是:

System.NotSupportedException未处理 HResult=-2146233067
Message=向导应只包含向导页面。
Source=Xceed.Wpf.Toolkit

如有帮助,将不胜感激。
谢谢, Ray
2个回答

2

感谢您的回复。

昨晚我尝试使用IConverter类进行操作,但是没有成功(目前还没成功)。

由于有待处理的截止日期,我决定编写一个简单的转换属性。

    public List<WizardPage> wizPages
    {
        get
        {
            List<WizardPage> rtn = new List<WizardPage>();
            foreach (ViewModelBase vmb in Pages)
            {
                rtn.Add(new WizardPage()
                {   Title = vmb.DisplayName
                ,   Description = vmb.DisplayDescription
                ,   DataContext = vmb
                });  //  rtn.Add
            }   //  foreach (ViewModelBase vmb in Pages)

            return rtn;
        }
    }

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接