Как поместить экспортированный вид в указанное c расположение другого экспортируемого вида? - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь создать панель инструментов, используя два экспортированных представления. Первый вид имеет кнопки A, D, E, а второй - кнопку B, C. Я хочу создать панель инструментов, поместив оба вида в новый вид. Проблема в том, как разместить второй вид внутри первого вида после кнопки А.

Итак, расположение кнопки должно быть примерно таким:

A, B, C, D, E (ожидается) Расположение)

Вот рабочий код для размещения его рядом, т.е.

A, D, E, B, C

Это пользовательский элемент управления, в который будут помещены оба вида ToolbarView.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>

Это код, который будет получать экспортированные виды и создавать панель инструментов:

        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;

1 Ответ

1 голос
/ 06 февраля 2020

Адаптер региона по умолчанию для элемента управления контентом не может этого сделать.

У вас есть два варианта:

  1. Создать область панели инструментов в элементе управления элементами и сделать вид для каждой кнопки и присвойте ему индекс, который используется для упорядочения кнопок в правильном порядке
  2. Получите кнопки из пользовательского сервиса, который управляет упорядочением, и отобразите их в элементе управления содержимым, используя представление, содержащее элемент управления

Если кнопки расположены c и определяются только конфигурацией, я бы выбрал go для второго варианта, потому что это тривиально просто. Если кнопки меняются динамически, я думаю, что первый вариант имеет больше смысла. Если вам не нужно удалять кнопки динамически, то есть потому, что вы не можете отменить навигацию по представлению из региона.

...