Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 自定义框架元素调整大小以适应父元素_Wpf_Xaml - Fatal编程技术网

Wpf 自定义框架元素调整大小以适应父元素

Wpf 自定义框架元素调整大小以适应父元素,wpf,xaml,Wpf,Xaml,我正在尝试创建自定义框架元素对象。不幸的是,我不知道如何调整它的大小以适应父对象(例如边框) 我已经按照下面的方式设置了构造函数,但是没有调用SizeChanged事件(除了在最开始的时候) 通常您必须在MeasureOverride和ArrangeOverride中执行此类代码 测量超越的示例 受保护的覆盖尺寸测量覆盖(尺寸可用尺寸) { //返回可用大小以使用容器大小 返回可用性; } 或者,您可以选择从UserControl或其他合适的容器派生元素,以完成此操作 更多关于测量和排列的信息

我正在尝试创建自定义框架元素对象。不幸的是,我不知道如何调整它的大小以适应父对象(例如边框)

我已经按照下面的方式设置了构造函数,但是没有调用SizeChanged事件(除了在最开始的时候)


通常您必须在
MeasureOverride
ArrangeOverride
中执行此类代码

测量超越的示例

受保护的覆盖尺寸测量覆盖(尺寸可用尺寸)
{
//返回可用大小以使用容器大小
返回可用性;
}
或者,您可以选择从
UserControl
或其他合适的容器派生元素,以完成此操作

更多关于测量和排列的信息,请点击此处

如果要使用现有代码,应该这样做,但不推荐这样做

VisualParentChanged(DependencyObject oldParent)上受保护的覆盖无效 { base.OnVisualParentChanged(旧父级); 如果(oldParent!=null) (oldParent作为框架元素)。SizeChanged-=父项\u SizeChanged; 如果(父项!=null) (父对象作为框架元素)。SizeChanged+=父对象\u SizeChanged; } 无效父项\u SizeChanged(对象发送方,SizeChangedEventArgs e) { this.Width=e.NewSize.Width; this.Height=e.NewSize.Height; }
我尝试将基类设置为UserControl,但没有任何改变。为什么后者是个坏主意?默认情况下,
UserControl
会占用所有可用空间,如果不是这样,您是否可以发布一个可以复制相同内容的工作示例应用程序?第二,这种方法不是一个坏主意,但是当你有一个来自WPF的强大的布局框架来做这些事情时,它就变得多余了,所以不推荐使用?除非你有一些非标准的事情发生,否则没有理由在非标准的实践中发生。请澄清我的班级是空的。我的绘制方法只是绘制一个黑色矩形以供参考。我现在不想做任何事情,只是想先让最简单的部分工作。如果你需要一个矩形,就用XAML做
。WPF不是winforms。同样,除非您需要非常非标准的
,否则没有理由在非标准实践中使用。WPF是关于XAML和数据绑定的,而不是过程代码。
public MyFrameworkElement()
{
    this.SizeChanged += (o, e) =>
    {
        this.Width = e.NewSize.Width;
        this.Height = e.NewSize.Height;
        this.InvalidateVisual();
    };
}