首页 > 解决方案 > wpf Wizard Toolkit ItemsSource 绑定到列表

问题描述

我正在实现 MVVM 模式并希望使用 WPF ToolKit (Xceed.Wpf.Toolkit) 中的向导控件来设计我的界面。

我想做的是将向导的项目源绑定到 aList<ViewModelBase>并使用 aDataTemplate将其显示为页面。到目前为止,还没有乔伊。:-(

我已经尽可能地修剪了我的代码,但这就是它的精髓。

我的观点 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=Wizard 应该只包含 WizardPages。
来源=Xceed.Wpf.Toolkit

任何帮助将不胜感激。

TIA,雷

标签: c#wpfwpftoolkittoolkitxceed

解决方案


谢谢你的回复。昨晚我尝试在没有运气的情况下玩 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;
        }
    }

推荐阅读