如何从 DockPanel 获取高度和宽度?
How do I get the height and width from a DockPanel?
我正在使用 DockPanel 来托管一些图像增强控件。要增强的图像位于 'center' 停靠位置。我想让图像填满 DockPanel 的整个区域。我有一个实现 WPF Canvas 控件并采用 windows.Rect 作为输入的自定义 class。此 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
尚未加载。
这就是为什么您得到 0 的原因是 ActualWidth
和 ActualHeight
。
您可以为 Window 的 Loaded
事件添加事件处理程序,如下所示。
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);
}
我正在使用 DockPanel 来托管一些图像增强控件。要增强的图像位于 'center' 停靠位置。我想让图像填满 DockPanel 的整个区域。我有一个实现 WPF Canvas 控件并采用 windows.Rect 作为输入的自定义 class。此 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
尚未加载。
这就是为什么您得到 0 的原因是 ActualWidth
和 ActualHeight
。
您可以为 Window 的 Loaded
事件添加事件处理程序,如下所示。
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);
}