Wpf 在包装内自动调整尺寸?

Wpf 在包装内自动调整尺寸?,wpf,xaml,Wpf,Xaml,需要有关xaml布局的帮助 我有一个面板,里面有两个元素。左侧的主网格需要固定为900像素。第二个,AuxiliaryDataScrollViewer,我希望最小值为650,如果WrapPanel包装它,最大值为100%。这可能吗 以下是我目前得到的信息: <Window x:Class="scratch.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

需要有关xaml布局的帮助

我有一个面板,里面有两个元素。左侧的主网格需要固定为900像素。第二个,AuxiliaryDataScrollViewer,我希望最小值为650,如果WrapPanel包装它,最大值为100%。这可能吗

以下是我目前得到的信息:

<Window x:Class="scratch.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="768" Width="1024">
    <Grid>
        <ScrollViewer>
            <WrapPanel>
                <Grid Width="900" Height="800" Background="Bisque"></Grid>
                <ScrollViewer HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Hidden" Width="650">
                    <Grid Width="1500" Height="700" Background="Tomato"></Grid>
                </ScrollViewer>
            </WrapPanel>
        </ScrollViewer>
    </Grid>   
</Window>

谢谢

编辑并添加更多详细信息:


客户希望进行数据输入,并在右侧的面板中实时查看计算结果,但他的实验室中的一些计算机只能显示1280像素的宽度,因此在这些机器上,他希望将结果包装到数据输入表单的下方。

因为需求定义非常明确,您只需添加一个
SizeChanged
处理程序,并根据容器的宽度手动设置第二个元素的宽度。如果容器小于900+650,则将第二个元件拉伸至容器的100%

public MainWindow()
{
    SizeChanged += MainWindow_SizeChanged;
}

void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e)
{
    double firstElementWidth = MainGrid.Width;                          // 900
    double secondElementMinWidth = AuxillaryDataScrollViewer.MinWidth;  // 650 

    double secondElementWidth;

    // if wrapped, stretch to the container
    if (e.NewSize.Width < firstElementWidth + secondElementMinWidth)
        secondElementWidth = e.NewSize.Width;
    // otherwise (not wrapped), fill the remainder of the first row
    else
        secondElementWidth = e.NewSize.Width - firstElementWidth;
}
public主窗口()
{
SizeChanged+=主窗口_SizeChanged;
}
void主窗口\u SizeChanged(对象发送方,SizeChangedEventArgs e)
{
double firstElementWidth=MainGrid.Width;//900
double secondElementMinWidth=AuxiliaryDataScrollViewer.MinWidth;//650
双二次元素宽度;
//如果包装好,伸展至容器
if(例如NewSize.Width

显然,这是快速和肮脏的。如果您需要更健壮的东西,那么我建议编写一个符合您需要的约定的文档。WrapPanel无法将元素拉伸到整个宽度,但您没有理由不能设计一个这样的面板。

您希望两个元素并排吗?如果显示器具有分辨率,如果没有,我希望它进行包装。我测试了您的代码,它可以按照您的预期工作。感谢您查看代码,它没有达到我所需要的效果,因为如果它被包装,它不会延伸到整个页面的宽度。我想到了这一点,但不想在代码审查期间因为缺少一个更简单/不那么麻烦的解决方案而被嘲笑。谢谢