如何获得在运行时更改的WPF面板的大小?

时间:2010-01-20 18:59:23

标签: c# wpf width panel

我有Panel Width可以在运行时调整大小:

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="770*"/>
    </Grid.ColumnDefinitions>
    <panels:NavigationPanel x:Name="cmBar" Margin="2,2,0,2"
                            HorizontalAlignment="Left" Width="220"/>
    <panels:DetailAreaPanel x:Name="detailGrid" Margin="224,2,2,2" />
</Grid>

当程序关闭时,我想在注册表中保存新的Width。因此程序下次打开时会加载到相同的大小。我除了Width之外都有其他工作,除非我对新Width进行硬编码。所以我认为我的保存是错误的。

all[5] = cmBar.ActualWidth.ToString();

然后将

all[]写入注册表。无论面板如何调整大小,cmBar.ActualWidth总是220.任何想法?

3 个答案:

答案 0 :(得分:0)

Horizo​​ntalAlignment =“Stretch”将允许控件的大小为其父级。 “左”只是自身的大小,并在其右侧留下空白空间。

答案 1 :(得分:0)

Aviad P.有一个正确的.Width是导致问题的原因。解决方法是当我加载宽度以将其加载为.MaxWidth这将调整大小但允许.ActualWidth具有面板的实际宽度。

答案 2 :(得分:-1)

表示Width="220"的小部分将宽度设置为220,除非从代码隐藏中明确更改,否则不会更改。您是否在代码隐藏中更改了面板的宽度?如果不是 - 那么它的宽度确实不会改变,并且在其整个生命周期内保持在220.