wpf Wizard Toolkit ItemsSource привязка к списку - PullRequest
0 голосов
/ 13 ноября 2018

Я реализую шаблон MVVM и хочу разработать свой интерфейс с помощью Wizard Control из набора инструментов 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: ВМ, свойство, возвращающее список, определено:

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
Сообщение = мастер должен содержать только страницы мастера.
Источник = Xceed.Wpf.Toolkit

Любая помощь будет принята с благодарностью.

ТИА, Ray

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Спасибо за этот ответ.Прошлой ночью я безуспешно пытался поиграть с классом 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;
        }
    }
0 голосов
/ 13 ноября 2018

Это, очевидно, не поддерживается, как вы можете видеть в исходном коде: https://github.com/xceedsoftware/wpftoolkit/blob/master/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/Wizard/Implementation/Wizard.cs

Боюсь, вы можете привязать только к IEnumerable<Xceed.Wpf.Toolkit.WizardPage>.

...