我正在使用 DockPanel 来托管一些图像增强控件。要增强的图像位于“中心”停靠位置。我想让图像填充 DockPanel 的整个区域。我有一个自定义类,它实现了 WPF Canvas 控件并将 windows.Rect 作为输入。这个 Rect 将为我覆盖的图像渲染函数设置区域。
我试图获得 DockPanel.ActualHeight 和 .ActualWidth。两者都是 NaN 和 DockPanel.Width 和 Height = 0。
public MainWindow()
{
ImageDataModel = new ImageDataModel();
DataContext = ImageDataModel;
InitializeComponent();
WindowState = WindowState.Maximized;
var tmpWindow = Window.GetWindow(BaseDockPanel);
Rect rect = new Rect(0, 0, BaseDockPanel.ActualWidth, BaseDockPanel.ActualHeight);
bitmapCanvas = new BitMapCanvas(rect);
BaseDockPanel.Children.Add(bitmapCanvas);
}
我希望能够创建一个 windows.Rect,它是 DockPanel.center 高度和宽度的实际尺寸。当前控件的高度和宽度为 0。
在构建 时MainWindow
, 内的子控件Window
在您的情况下BaseDockPanel
尚未加载。
这就是为什么你的ActualWidth
和得到 0 的原因ActualHeight
。
您可以做的是为 Window 的Loaded
事件添加一个 EventHandler,如下所示。
public MainWindow()
{
ImageDataModel = new ImageDataModel();
DataContext = ImageDataModel;
InitializeComponent();
WindowState = WindowState.Maximized;
this.Loaded += Window_Loaded;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
var tmpWindow = Window.GetWindow(BaseDockPanel);
// You will get your ActualWidth and ActualHeight here.
Rect rect = new Rect(0, 0, BaseDockPanel.ActualWidth, BaseDockPanel.ActualHeight);
bitmapCanvas = new BitMapCanvas(rect);
BaseDockPanel.Children.Add(bitmapCanvas);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句