You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

窗口启动时Viewbox呈灰色,点击按钮后恢复正常,如何解决该问题?

解决Viewbox初始灰色问题的方案

你遇到的问题根源在于:初始创建的按钮未设置Content,导致UniformGrid无法正确计算单元格的固有尺寸,Viewbox因内部元素尺寸不确定,只能显示灰色占位区域;点击按钮设置Content后,布局重新计算才恢复正常。

以下是几种直接有效的解决方法:


方法1:给按钮设置初始空内容

在创建按钮时,为Content赋值空字符串,让WPF能识别按钮的基础尺寸,UniformGrid和Viewbox就能正常渲染布局。修改后的CreateButtons方法如下:

private void CreateButtons()
{
    for (int row = 0; row < 15; row++)
    {
        for (int col = 0; col < 15; col++)
        {
            Button btn = new Button();

            btn.Name = "btn" + row.ToString("00") + col.ToString("00");
            btn.Content = string.Empty; // 添加这行,设置初始空内容
            btn.Background = new SolidColorBrush(Colors.White);
            btn.Click += Button_Click;

            grdButtons.Children.Add(btn);
        }
    }
}

方法2:给按钮设置最小尺寸

如果不想设置空Content,可直接指定按钮的MinWidth和MinHeight,强制UniformGrid按固定最小尺寸计算单元格:

// 在创建按钮时添加以下两行
btn.MinWidth = 20;
btn.MinHeight = 20;

方法3:调整Viewbox的Stretch属性(可选)

尝试将Viewbox的Stretch属性改为Uniform,或添加StretchDirection="Both",确保元素在任何尺寸下都能正确拉伸。不过此方法优先级低于前两种,仅作为补充方案:

<Viewbox Grid.ColumnSpan="1" Stretch="Uniform" StretchDirection="Both" Margin="250,67,250,67">
    <UniformGrid Name="grdButtons" Rows="15" Columns="15" Margin="0"/>
</Viewbox>

内容的提问来源于stack exchange,提问作者Adam Johansson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 19:17:12