WPF Canvas做自动缩放时获取控件的实际高度

        WPF在 Canvas控件,因为要实现自动缩放,高度和款第都是设置为自动的。如果用ActualWidth和ActualHeight返回的值都是零。

解决方法:

我们Loaded方法等程序加载完成之后再获取实际高度和宽度。

   

Loaded:在元素已布局、已呈现且可用于交互时发生。
1 <Window x:Class="Smoke.Weather.Main"
2         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="Window_Loaded"
4         Title="Main" Height="300" Width="300">
5     <Canvas x:Name="Carrier"  Background="Transparent"   >
6 
7     </Canvas>
8 </Window>
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Windows;
 6 using System.Windows.Controls;
 7 using System.Windows.Data;
 8 using System.Windows.Documents;
 9 using System.Windows.Input;
10 using System.Windows.Media;
11 using System.Windows.Media.Imaging;
12 using System.Windows.Shapes;
13 
14 namespace Smoke.Weather
15 {
16     /// <summary>
17     /// Main.xaml 的交互逻辑
18     /// </summary>
19     public partial class Main : Window
20     {
21         public Main()
22         {
23             InitializeComponent();
24         }
25 
26         private void Window_Loaded(object sender, RoutedEventArgs e)
27         {
28             Button  Spirit = new Button();
29             Spirit.Width = Carrier.ActualWidth;
30             Spirit.Height = Carrier.ActualHeight;
31             Carrier.Children.Add(Spirit);
32         }
33     }
34 }
原文地址:https://www.cnblogs.com/dawn-cn/p/4125671.html