wpf 向导工具包 ItemsSource 绑定到列表
wpf Wizard Toolkit ItemsSource binding to a List
我正在实施 MVVM 模式并希望使用 WPF 工具包 (Xceed.Wpf.Toolkit) 中的向导控件设计我的界面。
我想做的是将向导的项目源绑定到 List<ViewModelBase>
并使用 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 was unhandled HResult=-2146233067
Message=Wizard should only contain WizardPages.
Source=Xceed.Wpf.Toolkit
如有任何帮助,我们将不胜感激。
TIA,
雷
这显然不受支持,如您在源代码中所见:https://github.com/xceedsoftware/wpftoolkit/blob/master/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs
恐怕你只能绑定到一个IEnumerable<Xceed.Wpf.Toolkit.WizardPage>
。
感谢您的回复。
昨晚我试过玩 IConverter class 但运气不好(还)
由于截止日期未定,我决定编写一个简单的转换程序 属性。
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;
}
}
我正在实施 MVVM 模式并希望使用 WPF 工具包 (Xceed.Wpf.Toolkit) 中的向导控件设计我的界面。
我想做的是将向导的项目源绑定到 List<ViewModelBase>
并使用 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 was unhandled HResult=-2146233067
Message=Wizard should only contain WizardPages.
Source=Xceed.Wpf.Toolkit
如有任何帮助,我们将不胜感激。
TIA, 雷
这显然不受支持,如您在源代码中所见:https://github.com/xceedsoftware/wpftoolkit/blob/master/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs
恐怕你只能绑定到一个IEnumerable<Xceed.Wpf.Toolkit.WizardPage>
。
感谢您的回复。 昨晚我试过玩 IConverter class 但运气不好(还)
由于截止日期未定,我决定编写一个简单的转换程序 属性。
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;
}
}