首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ribbon ApplicationMenu AuxilaryPane大小

Ribbon ApplicationMenu AuxilaryPane大小
EN

Stack Overflow用户
提问于 2011-07-21 01:47:45
回答 6查看 6.5K关注 0票数 2

如何在WPF Ribbon ApplicationMenu中更改AuxilaryPane的大小?我已经将最近的文件列表添加到该区域,但它正在被截断。理想情况下,我希望辅助窗格像Word/Excel一样充满屏幕。

我的代码:

代码语言:javascript
复制
<r:Ribbon.ApplicationMenu>
    <r:RibbonApplicationMenu>
        <r:RibbonApplicationMenu.AuxiliaryPaneContent>
            <StackPanel>
                <TextBlock Text="Recent Files" />
                <Separator />
                <ItemsControl ItemsSource="{Binding RecentFiles}">
                    <ItemsControl.ItemTemplate>
                        <DataTemplate>
                            <r:RibbonApplicationMenuItem Header="{Binding ShortPath}" 
                                                         Command="{Binding DataContext.OpenRecentFileCommand, RelativeSource={RelativeSource AncestorType=ItemsControl}}"
                                                         CommandParameter="{Binding LongPath}"/>
                        </DataTemplate>
                    </ItemsControl.ItemTemplate>
                </ItemsControl>
            </StackPanel>
        </r:RibbonApplicationMenu.AuxiliaryPaneContent>
    </r:RibbonApplicationMenu>                
</r:Ribbon.ApplicationMenu>
EN

回答 6

Stack Overflow用户

发布于 2016-03-09 22:52:53

根据这个帖子中的答案,我发现对RibbonApplicationMenu进行子类并将第三列的宽度设置为Auto是最容易的。

代码语言:javascript
复制
 public class CustomRibbonApplicationMenu : System.Windows.Controls.Ribbon.RibbonApplicationMenu
    {
        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            System.Windows.DependencyObject obj = this.GetTemplateChild("PART_AuxiliaryPaneContentPresenter");

            System.Windows.Controls.ContentPresenter c = obj as System.Windows.Controls.ContentPresenter;

            ((System.Windows.Controls.Grid)((System.Windows.Controls.Border)c.Parent).Parent).ColumnDefinitions[2].Width = System.Windows.GridLength.Auto;
        }
    }

现在,您只需将Ribbon xaml从

代码语言:javascript
复制
<Ribbon.ApplicationMenu>
                <RibbonApplicationMenu>

代码语言:javascript
复制
<Ribbon.ApplicationMenu>
                <ctrl:CustomRibbonApplicationMenu>
票数 3
EN

Stack Overflow用户

发布于 2012-07-16 17:51:16

如果你正在寻找一个非常快速的修复方法来增加高度,你可以简单地添加一些无用的RibbonApplicationMenuItems来填充盒子(而不需要修改MS源代码)。

代码语言:javascript
复制
            <ribbon:Ribbon.ApplicationMenu>
            <ribbon:RibbonApplicationMenu>
                <ribbon:RibbonApplicationMenu.Items>
                    <ribbon:RibbonApplicationMenuItem Name="saveSettings" Header="Save Settings" />
                    <ribbon:RibbonApplicationMenuItem IsEnabled="False"/> <!--USELESS-->
                    <ribbon:RibbonApplicationMenuItem IsEnabled="False"/> <!--USELESS-->
                </ribbon:RibbonApplicationMenu.Items>

                <ribbon:RibbonApplicationMenu.AuxiliaryPaneContent >
                        <StackPanel Orientation="Vertical" >
                            <GroupBox>
                                <Label Content="System Settings" />
                            </GroupBox>
                            <StackPanel Orientation="Horizontal">
                            </StackPanel>
                        </StackPanel>
                </ribbon:RibbonApplicationMenu.AuxiliaryPaneContent>
            </ribbon:RibbonApplicationMenu>
        </ribbon:Ribbon.ApplicationMenu>
票数 2
EN

Stack Overflow用户

发布于 2011-09-27 20:39:41

我已经为同样的问题寻找了解决方案。

没有直接的属性来修改它。

创建此类属性的示例可在msdn中找到

以下是主要的解决方案:

更改功能区库的源代码。微软提供了功能库的源代码:http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2bfc3187-74aa-4154-a670-76ef8bc2a0b4

下载源代码并将其打开,在MicrosoftRibbonForWPFSourceAndSamples\RibbonControlsLibrary\Microsoft\Windows\Controls\Ribbon\RibbonApplicationMenu.cs,中添加一个依赖属性:

代码语言:javascript
复制
    public double MinMenuHeight
    {
      get { return (double)GetValue(MinMenuHeightProperty); }
      set { SetValue(MinMenuHeightProperty, value); }
    }
    public static readonly DependencyProperty MinMenuHeightProperty =
        DependencyProperty.Register("MinMenuHeight", typeof(double), typeof(RibbonApplicationMenu), new UIPropertyMetadata(0.0));

在XAML行7519中,添加MicrosoftRibbonForWPFSourceAndSamples\RibbonControlsLibrary\Themes\Generic.xaml,代码:

代码语言:javascript
复制
    <Border x:Name="PopupBorder" MinHeight="{TemplateBinding MinMenuHeight}" BorderBrush="{Binding RelativeSource={RelativeSource AncestorType={x:Type ribbon:RibbonMenuButton}}, Path=Ribbon.BorderBrush}" Background="{Binding RelativeSource={RelativeSource AncestorType={x:Type ribbon:RibbonMenuButton}}, Path=Ribbon.Background}" BorderThickness="1" CornerRadius="2">
        <Grid>

        </Grid>
    </Border>

只添加给定xaml的前两行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6766168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档