Свободная лента SelectedTabItem или SelectedTabIndex - PullRequest
0 голосов
/ 21 января 2020

Я использую Fluent Ribbon в шаблоне проектирования MVVM с View / ViewModel. Моя цель - изменить тело в соответствии с выбранной вкладкой. Я мог бы использовать либо SelectedTabItem или SelectedTabIndex и поиск соответствующего представления. Однако ни один из них не запускается при изменении выбора вкладки. Во View у меня есть ...

<Fluent:Ribbon Grid.Row="0" SelectedTabItem="{Binding SelectedRibbonTab}" SelectedTabIndex="{Binding SelectedRibbonTabIndex}">
</Fluent:Ribbon>
<ContentControl Grid.Row="1" Content="{Binding RibbonTabContent}"/>

В ViewModel у меня есть ...

    // Used both Item and Index for troubleshoothing, but need only one or the other for implementation

    private IDictionary<string, FrameworkElement> RibbonTabViews;
    private List<FrameworkElement> RibbonTabViewsList;

    public RibbonTabItem SelectedRibbonTab
    {
        get 
        { 
            return selectedRibbonTab;
        }
        set
        {
            Update(() => SelectedRibbonTab, ref selectedRibbonTab, value, false);
            UpdateContentControl();
        }
    }

    public int SelectedRibbonTabIndex
    {
        get
        {
            return selectedRibbonTabIndex;
        }
        set
        {
            Update(() => SelectedRibbonTabIndex, ref selectedRibbonTabIndex, value, false);
            UpdateContentControl(value);
        }
    }

    public FrameworkElement RibbonTabContent
    {
       get { return ribbonTabContent; }
       set { Update(() => RibbonTabContent, ref ribbonTabContent, value, false); }
    }

    protected void UpdateContentControl()
    {
        RibbonTabContent = RibbonTabViews[SelectedRibbonTab.Header.ToString()];
    }

    protected void UpdateContentControl(int index)
    {
        RibbonTabContent = RibbonTabViewsList[index];
    }

Я знаю, что мне не нужны обе привязки, но ради устранения неполадок я иметь и пункт и индекс. Я думаю, что в ViewModel SelectedRibbonTab и SelectedRibbonTabIndex будут вызываться каждый раз, когда вкладка изменилась. К сожалению, это не так. У меня есть точки останова на установщиков и получателей для каждого, и ни один из них не ударил при смене вкладок. Что мне не хватает? Я годами использовал этот подход с Microsoft Ribbon, но по какой-то причине они не работают в Fluent Ribbon. Любая помощь будет великолепна, спасибо.

1 Ответ

1 голос
/ 25 января 2020

Вы должны установить режим привязки на TwoWay, чтобы получить обновленные значения в вашей ViewModel.

...