窗口启动时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
相关产品推荐
相关产品推荐

