【发布时间】:2015-03-27 18:32:45
【问题描述】:
我正在创建一个代码隐藏弹出窗口。在按钮上单击添加子项并设置 IsOpen = true。现在我可以看到弹出窗口了。 我有另一个按钮,点击时,弹出窗口的 ActualHeight(和 ActualWidth)总是返回 0。我怎样才能得到实际值? 注意:Snoop 显示正确的值。
代码sn-p:
public partial class MainWindow : Window
{
private Popup popup = new Popup();
public MainWindow()
{
InitializeComponent();
}
private void ButtonShowPopup_OnClick(object sender, RoutedEventArgs e1)
{
var dockPanel = new DockPanel();
dockPanel.Children.Add(new TextBlock { Text = "First TextBlock", Background = Brushes.White });
popup.Child = dockPanel;
popup.IsOpen = true;
}
private void ButtonProperties_OnClick(object sender, RoutedEventArgs e)
{
Dispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(delegate(Object state)
{
MessageBox.Show(popup.ActualHeight.ToString());
return null;
}), null);
MessageBox.Show(popup.ActualHeight.ToString());
}
}
Xaml:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition></ColumnDefinition>
<ColumnDefinition></ColumnDefinition>
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Click="ButtonShowPopup_OnClick" Content="ShowPopup"></Button>
<Button Grid.Column="1" Click="ButtonProperties_OnClick" Content="Get Actual height & Width"></Button>
</Grid>
【问题讨论】: