Prism Sample 12-UsingCompositeCommands
阅读原文时间:2023年07月11日阅读:1

本例中,主页是一个按钮,绑定了一个复合命令,然后下面一个TabControl


    <Button Content="Save" Margin="10" Command="{Binding ApplicationCommands.SaveCommand}"/>

    <TabControl Grid.Row="1" Margin="10" prism:RegionManager.RegionName="ContentRegion" />  
</Grid>

然后构建一个视图及ViewModel,VM中建立一个命令,用于更新TabView的内容。关键是,这个命令注册成为复合命令的子命令

public TabViewModel(IApplicationCommands applicationCommands)
{
_applicationCommands = applicationCommands;

        UpdateCommand = new DelegateCommand(Update).ObservesCanExecute(() => CanUpdate);

        \_applicationCommands.SaveCommand.RegisterCommand(UpdateCommand);  
    }

最后,将TabView 的三个实例依次添加到ContentRegion

public void OnInitialized(IContainerProvider containerProvider)
{
var regionManager = containerProvider.Resolve();
IRegion region = regionManager.Regions["ContentRegion"];

        var tabA = containerProvider.Resolve<TabView>();  
        SetTitle(tabA, "Tab A");  
        region.Add(tabA);

        var tabB = containerProvider.Resolve<TabView>();  
        SetTitle(tabB, "Tab B");  
        region.Add(tabB);

        var tabC = containerProvider.Resolve<TabView>();  
        SetTitle(tabC, "Tab C");  
        region.Add(tabC);  
    }

然后我们看到,在每个TabView中的命令,只更新自己的View。而复合命令,更新了所有的View,虽然只注册了一个命令。但这个命令应用于多个实例的时候,在每个实例上都会起使用。

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章