Как я могу получить размер панели WPF, которая была изменена во время выполнения? - PullRequest
0 голосов
/ 20 января 2010

У меня есть 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 голосов
/ 21 января 2010

HorizontalAlignment = "Stretch" позволит размер элемента управления для его родителя. «Слева» просто масштабирует себя и оставляет пустое пространство справа.

0 голосов
/ 21 января 2010

Авиад П. имел одно это право, .Width - вот что вызывает проблему. Решение заключается в том, когда я загружаю ширину, чтобы загрузить ее как .MaxWidth Это произведет изменение размера, но позволит .ActualWidth иметь реальную ширину панели.

0 голосов
/ 20 января 2010

Небольшой фрагмент с надписью Width="220" устанавливает ширину равной 220, и это не изменится, если не будет явно изменено из кода. Вы меняете ширину панели в коде позади? Если нет - то его ширина действительно не меняется и остается равной 220 на протяжении всего срока службы.

...