【问题标题】:Code-behind popup ActualHeight and ActualWidth always 0代码隐藏弹出框 ActualHeight 和 ActualWidth 始终为 0
【发布时间】: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 &amp; Width"></Button>
</Grid>

【问题讨论】:

    标签: c# .net wpf xaml


    【解决方案1】:

    使用Popup.Child 对象。

    ...
    private void ButtonProperties_OnClick(object sender, RoutedEventArgs e)
    {
        MessageBox.Show(popup.Child.RenderSize.Height.ToString(CultureInfo.InvariantCulture));
    }
    ...
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-16
      相关资源
      最近更新 更多