如何在WPF功能区中添加按钮而不移动所有下一个控件?

如何在WPF功能区中添加按钮而不移动所有下一个控件?,wpf,button,position,ribbon,Wpf,Button,Position,Ribbon,我使用的WPF功能区如下所示: <Ribbon x:Name="RibbonWin" SelectedIndex="0"> ... <RibbonTab Name="OpenShow" Header="Open/Kijk" KeyTip="O" > <TextBox x:Name="X" Width="300"> &l

我使用的WPF功能区如下所示:

<Ribbon x:Name="RibbonWin"  SelectedIndex="0">
...
<RibbonTab Name="OpenShow" Header="Open/Kijk" KeyTip="O" >

<TextBox x:Name="X" Width="300">
<RibbonButton x:Name="LangNL" SmallImageSource="Images\FLGNETH.ico" Label="NL"/>
<RibbonButton x:Name="LangEN" SmallImageSource="Images\FLGUK.ico" Label="EN"/>
<RibbonButton x:Name="Nextlotbutton" SmallImageSource="Images\go.png" Label="Open"/>

...
正如您在图片中看到的,这显示了一个文本框和2个按钮(国旗),下面有一个标签。接下来的3个按钮显示在下一列中(只有第一个按钮在WPF代码段中)

我想要一个小图片按钮在文本框前面和/或一些更多的按钮左边的旗帜按钮和下面的文本框;就在这张图片中,我添加了一些灰色按钮,作为我想要这些按钮的示例

这似乎是不可能的。即使我添加按钮并使用边距将其定位到所需位置,与文本框相同的“行”中的下一个按钮也会向下移动1个位置,而原始位置为空。它的工作原理类似于StackPanel,添加一个元素,WPF中该元素下方的所有内容都会向下和向右移动一个位置,而不管使用边距定义的实际位置如何


我可以做些什么来避免这种行为吗?

我不认为您可以在
功能区中直接这样做,但您可以尝试使用控件复制布局。它将水平显示子控件。但是,其文本框和按钮控件的样式与普通功能区组中的样式略有不同,其行为也会有所不同

<Ribbon>
   <RibbonTab Header="Tab">
      <RibbonGroup Header="Group">
         <RibbonControlGroup>
            <RibbonButton Label="TB"></RibbonButton>
            <RibbonTextBox/>
         </RibbonControlGroup>
         <RibbonControlGroup>
            <RibbonButton Label="NL"></RibbonButton>
            <RibbonButton Label="NL 1"></RibbonButton>
            <RibbonButton Label="NL 2"></RibbonButton>
         </RibbonControlGroup>
         <RibbonControlGroup>
            <RibbonButton Label="EN"></RibbonButton>
            <RibbonButton Label="EN 1"></RibbonButton>
            <RibbonButton Label="EN 2"></RibbonButton>
         </RibbonControlGroup>
      </RibbonGroup>
   </RibbonTab>
</Ribbon>

由于按钮是水平堆叠的,因此可以明确指定宽度或添加边距和填充以实现所需的布局。结果如下所示:

<Ribbon x:Name="RibbonWin"  SelectedIndex="0">
...
<RibbonTab Name="OpenShow" Header="Open/Kijk" KeyTip="O" >

<TextBox x:Name="X" Width="300">
<RibbonButton x:Name="LangNL" SmallImageSource="Images\FLGNETH.ico" Label="NL"/>
<RibbonButton x:Name="LangEN" SmallImageSource="Images\FLGUK.ico" Label="EN"/>
<RibbonButton x:Name="Nextlotbutton" SmallImageSource="Images\go.png" Label="Open"/>

非常感谢您提供此信息!我不知道RibbonControl组的存在。事实上,我终于用一个技巧解决了问题;因为我想添加3个按钮,所以我成功地将这些按钮移动到适当的位置,而不会影响其他位置,但我相信,您的解决方案将比适合特定功能区(我的功能区上有3个)的按钮少或多

我添加了以下内容(XAML代码的主要部分):


这就是结果(带黑色箭头的3个按钮)

迪克