Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将导出视图放置到另一个导出视图的特定位置?_C#_Wpf_Mvvm_Prism - Fatal编程技术网

C# 如何将导出视图放置到另一个导出视图的特定位置?

C# 如何将导出视图放置到另一个导出视图的特定位置?,c#,wpf,mvvm,prism,C#,Wpf,Mvvm,Prism,我正在尝试使用两个导出的视图创建工具栏。第一个视图有按钮A、D、E,第二个视图有按钮B、C。我想通过将这两个视图放置到新视图中来创建工具栏。问题是如何将第二个视图放置在按钮A之后的第一个视图中 所以,按钮的排列应该是 A、 B、C、D、E(预期安排) 这是并排放置的工作代码,即 A、 D,E,B,C 这是将放置两个视图的用户控件 工具栏视图.xaml <UserControl x:Class="Dummy.Views.ToolbarView" xmlns="http://

我正在尝试使用两个导出的视图创建工具栏。第一个视图有按钮A、D、E,第二个视图有按钮B、C。我想通过将这两个视图放置到新视图中来创建工具栏。问题是如何将第二个视图放置在按钮A之后的第一个视图中

所以,按钮的排列应该是

A、 B、C、D、E(预期安排)

这是并排放置的工作代码,即

A、 D,E,B,C

这是将放置两个视图的用户控件 工具栏视图.xaml

<UserControl x:Class="Dummy.Views.ToolbarView"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"                                          
         xmlns:prism="http://prismlibrary.com/"                         
         mc:Ignorable="d">
<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width ="0.5*"/>
        <ColumnDefinition Width ="0.5*"/>
    </Grid.ColumnDefinitions>
    <ContentControl  prism:RegionManager.RegionName="RegionForFirstView"/>
    <ContentControl Grid.Column="1" prism:RegionManager.RegionName="RegionForSecondView"/>
</Grid>

内容控件的默认区域适配器无法执行此操作

您有两个选择:

  • 在items控件中创建工具栏区域,并为每个按钮创建一个视图,并为其提供一个用于将按钮按正确顺序排列的索引
  • 从管理排序的自定义服务获取按钮,并使用包含items控件的视图在content控件中显示它们
  • 如果按钮是静态的,并且只由配置决定,我会选择选项二,因为它非常简单。如果按钮是动态变化的,我想第一个选项更有意义。如果不需要动态删除按钮,也就是说,因为无法从区域取消浏览视图

            ToolbarView toolbarView = new ToolbarView();
            var scopedRegionManager = _myRegionManager.CreateRegionManager();
            RegionManager.SetRegionManager(toolbarView, scopedRegionManager);
            navParams.Add("regionManager", scopedRegionManager);
            scopedRegionManager.RequestNavigate("RegionForFirstView", "ExportedView1", navParams);
            scopedRegionManager.RequestNavigate("RegionForSecondView", "ExportedView2", navParams);
            ToolbarContent = toolbarView;