【发布时间】:2018-10-03 12:12:27
【问题描述】:
我有以下
public class MatrixButton : Button
{
public MatrixButton()
{
Height = 20;
Width = 44;
Content = "foo";
}
protected override Size MeasureOverride(Size constraint)
{
var measureOverride = new Size(44, 20);
return measureOverride;
}
protected override Size ArrangeOverride(Size arrangeBounds)
{
var arrangeOverride = new Size(44, 20);
return arrangeOverride;
}
}
现在我把那个按钮放在一个像这样的空窗口中:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Content = new MatrixButton();
}
}
由于某种原因,该按钮在窗口中不可见。有谁知道为什么? 如果我删除覆盖按钮,当然会正确显示...
编辑: 原因是按钮集成在一个复杂的布局中,其中有很多按钮,布局传递会消耗大量时间,但按钮的大小将始终相同
【问题讨论】:
-
所有这些覆盖的意义在哪里?只需设置宽度和高度。无论如何,您可能需要调用基类方法。
-
就像 Clemens 建议的那样,我不明白这一点,但我建议您在完成工作后调用基本函数。很可能基础正在处理一些用于正确更新对象的键值。
标签: c# wpf arrangeoverride