如何在WPF Catel框架中使用ViewModel之间的通信?

时间:2016-01-17 15:42:18

标签: c# wpf xaml mvvm catel

当我在RegistrationViewModel或任何其他ViewModel中单击注册按钮(例如)时,我想更改MainWindowViewModel中的 LeftSlide MainSlide 属性

LeftSlide = _leftSlides [0];
MainSlide =任何其他ViewModel;


我已阅读此文档,但我无法在我的代码中实现此功能 https://catelproject.atlassian.net/wiki/display/CTL/MVVM+communication+styles 我怎样才能做到这一点?请帮帮我

MainWindow.xaml

<DockPanel LastChildFill="True">

    <DockPanel DockPanel.Dock="Top">
        <Grid Width="120" DockPanel.Dock="Left">
            <ContentControl Content="{Binding LeftSlide,
            Converter={StaticResource ViewModelToViewConverter}}"></ContentControl>
        </Grid>

        <Grid DockPanel.Dock="Right">
            <ContentControl Content="{Binding MainSlide,
            Converter={StaticResource ViewModelToViewConverter}}"></ContentControl>
        </Grid>
    </DockPanel>
</DockPanel>

RegistrationViewModel.cs

public class RegistrationViewModel : ViewModelBase
{
    public RegistrationViewModel()
    {
        RegistrationUserCommand = new Command(OnRegistrationUserCommandExecute);
    }

    public Command RegistrationUserCommand { get; private set; }
    private void OnRegistrationUserCommandExecute()
    {

        //when I click this button, I need to change LeftSlide property in
        // MainWindowViewModel to _leftSlides[1]  (LeftSlide = _leftSlides[1];)
         //for example
    }
}

MainWindowViewModel.cs

public class MainWindowViewModel : ViewModelBase
{
    private List<IViewModel> _leftSlides;
    private List<IViewModel> _mainSlides;
    public MainWindowViewModel()
    {
        _leftSlides = new List<IViewModel>
        {
            new NavViewModel(),
            new AnotherNavViewModel()
            //another ViewModels
        };

        _mainSlides = new List<IViewModel>
        {
            new RegistrationViewModel()
            //another ViewModels
        };

        //Default ViewModels
        MainSlide = _mainSlides[0];
        LeftSlide = _leftSlides[0];
    }

    public IViewModel LeftSlide { get; set; }
    public IViewModel MainSlide { get; set; }
}

我对WPF和Catel没有任何经验。这是我团队的第一个项目。我们在学习。我们无法停止使用Catel Framework。

0 个答案:

没有答案