Проблема с WPF и XAML - PullRequest
       27

Проблема с WPF и XAML

1 голос
/ 05 января 2011

Я новичок в WPF & Xaml. Я не знаю, как привязать, как закрепить ... На этом экране серый цвет - это статусбар, закрепленный, но сетка и меню - не все компоненты находятся на холсте.Это XAML

<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Class="WpfApplication6.MainWindow"
x:Name="Window"
Title="MainWindow"
Width="640" Height="480">

<Grid x:Name="LayoutRoot">
    <Canvas>
        <StackPanel Height="40" Width="624" VerticalAlignment="Top" HorizontalAlignment="Center">
            <Menu Height="39" Margin="1,0,0,0">
                <Menu.Background>
                    <LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
                        <GradientStop Color="#FFF6F6F6" Offset="0.25"/>
                        <GradientStop Color="#FFEAE8E8" Offset="0.25"/>
                        <GradientStop Color="#FFDCD9D9" Offset="0.8"/>
                        <GradientStop Color="White" Offset="1"/>
                    </LinearGradientBrush>
                </Menu.Background>
            </Menu>
        </StackPanel>
        <StackPanel Height="356" Canvas.Top="44" Width="161" HorizontalAlignment="Left">
            <Expander Header="Expander" Height="107">
                <Grid Background="#FFE5E5E5"/>
            </Expander>
        </StackPanel>
        <StackPanel Height="360" Canvas.Left="161" Canvas.Top="40" Width="463">
            <DataGrid Height="361"/>
        </StackPanel>
    </Canvas>
    <StackPanel Height="40" Margin="-1,0,0,0" VerticalAlignment="Bottom">
        <StatusBar Height="40" Background="#FF897676"/>
    </StackPanel>
</Grid>

alt text

1 Ответ

5 голосов
/ 05 января 2011

Вы не хотите, чтобы эти вещи входили в Canvas.Я не уверен, что когда-либо использовал Canvas в WPF.

DockPanel - ваш друг, и вот как это работает:

  • Каждый элемент управления вDockPanel получает DockPanel.Dock прикрепленное свойство: слева, сверху, справа или снизу
  • Что, без заливки?Это важно: у вас может быть один элемент управления, заполняющий доступное пространство, и это будет последний элемент управления , объявленный в DockPanel.Таким образом, даже если вы хотите, чтобы элемент управления «заливка» находился на самом верху, вы делаете его последним элементом в DockPanel и устанавливаете DockPanel.Dock="Top".
  • Кроме последнего элемента «заливка»другие, которые имеют такую ​​же настройку стыковки, будут закреплены в том порядке, в котором они были объявлены.

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

...