【问题标题】:C# wpf how to know a control (es. listbox) size when not specifiedC# wpf 如何在未指定时知道控件(例如列表框)的大小
【发布时间】:2015-11-13 06:43:31
【问题描述】:

我在一个窗口中有两个边框,第一个包含一个通过边距设置大小的列表框。所以我可以改变窗口大小--->边框改变--->列表框改变。我想知道它的宽度是多少,但是宽度属性报告 Nan 而实际宽度报告 0。

<Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <Border x:Name="Border1" BorderBrush="Gainsboro" BorderThickness="5" CornerRadius="8,8,3,3" Margin="10,10,168.8,10.4" >
                    <ListBox x:Name="lbButtons" Background="{x:Null}" BorderBrush="{x:Null}" Height="338" Margin="0,0,0.4,0"/>                        
                </Border>
                <Border x:Name="Border2" BorderBrush="Gainsboro" BorderThickness="5" CornerRadius="8,8,3,3" Grid.ColumnSpan="2" Margin="263,10,9.2,10" />
            </Grid>

这对每个控件都是有效的:如果没有指定,如何知道它的当前大小? 谢谢

【问题讨论】:

  • 1 - 你要那个干什么? 2 - 如果ActualWidth 为零,那么您正在查看错误的控件。
  • 组件可能尚未显示在您获得其大小的位置。您可以在对象的 loaded 事件中获取正确的 actualWidth。
  • @Jean-ClaudeColette 你是对的!这就是我放置私有 void lbButtons_Loaded(object sender, RoutedEventArgs e) 的原因,此处 ActualWidth 是正确的!您可以将其发布为解决方案,我将对其进行投票。谢谢!

标签: c# wpf width


【解决方案1】:

组件可能尚未显示在您获得其大小的位置。您可以在对象的加载事件中获得正确的实际宽度。

【讨论】:

    猜你喜欢
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    • 1970-01-01
    • 2011-02-22
    相关资源
    最近更新 更多