Как заставить объекты в DockPanel расшириться для приспосабливания всего свободного места в WPF?

Разница в том, что в классе InnerB нет члена val. где класс InheritedB расширяет класс B и имеет собственную копию члена val.

void run(){

    val = "new";     //<--- modifies B's val not InheritedB's val

    System.out.println(val);        // outputs: new
    new InnerB().printVal();        // outputs: new
    new InheritedB().printVal();    // outputs: old new
}

В вышеприведенном кодовом блоке printVal InnerB обращается к члену контейнера val, значение которого уже было изменено в методе run для присвоения значения new .

Но копия val в объекте InheritedB по-прежнему имеет значение « old », не измененное, и функция printVal использует это значение.

11
задан Mayur Dhingra 25 June 2014 в 14:50
поделиться

3 ответа

Это должно сработать - я настроил его так, чтобы TreeView и ListView совместно использовали основное представление 50/50; если вы этого не хотите, установите «Авто» и «*» или что-то в этом роде. Используйте "LastChildFill" в ваших интересах!

<Window x:Class="Clippy.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="400" Width="600" MinHeight="400" MinWidth="600" Loaded="Window_Loaded" SizeChanged="Window_SizeChanged">

    <DockPanel LastChildFill="True">
        <Menu Width="Auto" DockPanel.Dock="Top" />
        <ToolBar Width="Auto" DockPanel.Dock="Top" />
        <StatusBar DockPanel.Dock="Bottom" />

        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="0.5*" />
                <RowDefinition Height="0.5*" />
            </Grid.RowDefinitions>

            <TreeView Name="categoryTreeView" Grid.Row="0" />
            <ListView Name="clipListView" Grid.Row="1" />
        </Grid>
    </DockPanel>

</Window>
7
ответ дан 3 December 2019 в 06:47
поделиться

Вместо этого используйте DockPanel. StackPanel явно не заботится о видимом пространстве, тогда как DockPanel выполняет все вычисления своего размера на основе доступного пространства.

Обновление:

Кроме того, по моему опыту, помещая тело окна в представление, и только наличие вида в окне улучшает работу автоматического размера.

По какой-то причине установка всех дочерних элементов непосредственно в Окно не очень удобна для автоматического изменения размера.

Обновление 2:

11
ответ дан 3 December 2019 в 06:47
поделиться

Установите для свойств ширины и высоты значение "auto"

0
ответ дан 3 December 2019 в 06:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: