在RibbongGroup内水平拉伸WPF栅格
如何在在RibbongGroup内水平拉伸WPF栅格,wpf,xaml,ribbon,alignment,Wpf,Xaml,Ribbon,Alignment,如何在RibbonGroup内水平拉伸WPF网格?尽管有水平对齐属性,但它不会拉伸 <Window x:Name="FrmMain" x:Class="PhotoCell.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="PhotoCell
RibbonGroup
内水平拉伸WPF网格
?尽管有水平对齐
属性,但它不会拉伸
<Window x:Name="FrmMain" x:Class="PhotoCell.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="PhotoCell" Height="386.821" Width="757.701" WindowState="Maximized">
<Grid>
<Image x:Name="imgMain" Margin="10,142,10,9"/>
<Ribbon VerticalAlignment="Top">
<RibbonTab Header="Home" Height="88" VerticalAlignment="Top">
<RibbonGroup Header="Save/Load" Height="88" Margin="0" VerticalAlignment="Top" Width="90">
<Grid HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RibbonButton x:Name="cmdLoadImage" Background="#FFFFC500" Label="Load" Click="cmdLoadImage_Click" Margin="10,10,10,0" Grid.Row="0" HorizontalAlignment="Stretch" />
<RibbonButton x:Name="cmdSaveImage" Background="#FFFFC500" Label="Save" Click="cmdSaveImage_Click" Margin="10,10,10,0" Grid.Row="1" HorizontalAlignment="Stretch" />
</Grid>
</RibbonGroup>
</RibbonTab>
</Ribbon>
</Grid>
</Window>
我还尝试添加
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
行定义之后。我不确定为什么
HorizontalAlignment
和HorizontalContentAlignment
属性没有正常运行-可能是功能区控件模板中的错误
无论如何,有一个解决方法:您可以将RibbonGroup
和网格
绑定到RibbonTab的
实际宽度
属性。您可能需要使用转换器以偏移量微调这些值,但总而言之,它起到了以下作用:
<Ribbon VerticalAlignment="Top">
<RibbonTab x:Name="tab" Header="Home" Height="88" VerticalAlignment="Top">
<RibbonGroup Width="{Binding ElementName=tab, Path=ActualWidth}" Header="Save/Load" Height="88" Margin="0" VerticalAlignment="Top">
<Grid Width="{Binding ElementName=tab, Path=ActualWidth}" HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<RibbonButton x:Name="cmdLoadImage" Background="#FFFFC500" Label="Load" Click="cmdLoadImage_Click" Margin="10,10,10,0" Grid.Row="0" HorizontalAlignment="Stretch" />
<RibbonButton x:Name="cmdSaveImage" Background="#FFFFC500" Label="Save" Click="cmdSaveImage_Click" Margin="10,10,10,0" Grid.Row="1" HorizontalAlignment="Stretch" />
</Grid>
</RibbonGroup>
</RibbonTab>
</Ribbon>
我想在
功能区内部署一个RibbonGroup
。我用了不同的方法。因为我必须做一些计算(得到所有其他RibbonGroup的宽度),所以我没有使用带转换器的绑定。在转换器内,我无法轻松接触到其他控件。我使用了功能区的SizeChanged
事件。在这里,我设置了RibbonGroup
的宽度:
private void RibbonOnSizeChanged(object sender, SizeChangedEventArgs sizeChangedEventArgs)
{
ChangeWidgetsGroupWidth(sizeChangedEventArgs.NewSize.Width);
}
private void ChangeWidgetsGroupWidth(double newRibbonWidth)
{
double otherRibbonGroupWidths = 0;
foreach (RadRibbonGroup item in HomeTab.Items)
{
if (item != rgWidgetsGroup)
{
otherRibbonGroupWidths += item.ActualWidth + 2; // Extra margin between groups
}
}
double width = newRibbonWidth - otherRibbonGroupWidths - 6; // '6' to add extra margin
rgWidgetsGroup.Width = width > 0 ? width : 0;
}
rgWidgetsGroup
是我想要的最大大小的RibbonGroup
。我认为在RibbongGroup
中对控件
执行类似操作会很容易。我尝试添加
但没有效果。你能用更新的问题显示代码吗。现在修改应该非常清楚了。但是,有一个不一致的地方,我想你应该修改一下。我需要RibbonGroup
为90
像素宽。