Fluent Ribbon SelectedTabItem 或 SelectedTabIndex
Fluent Ribbon SelectedTabItem or SelectedTabIndex
我在 MVVM 设计模式中使用 Fluent Ribbon,View/ViewModel。我的目标是根据选择的选项卡更改正文。我可以使用 SelectedTabItem 或 SelectedTabIndex 并查找相应的视图。 However, neither fire when the tab selection changes.在视图中我有...
<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 中不起作用。任何帮助都会很棒,谢谢。
您必须将绑定模式设置为 TwoWay
才能在您的 ViewModel 中获取更新的值。
我在 MVVM 设计模式中使用 Fluent Ribbon,View/ViewModel。我的目标是根据选择的选项卡更改正文。我可以使用 SelectedTabItem 或 SelectedTabIndex 并查找相应的视图。 However, neither fire when the tab selection changes.在视图中我有...
<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 中不起作用。任何帮助都会很棒,谢谢。
您必须将绑定模式设置为 TwoWay
才能在您的 ViewModel 中获取更新的值。