本例中,主页是一个按钮,绑定了一个复合命令,然后下面一个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,虽然只注册了一个命令。但这个命令应用于多个实例的时候,在每个实例上都会起使用。
手机扫一扫
移动阅读更方便
你可能感兴趣的文章