Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Создание элементарного вэб-интерфейса


Автор: ДобренькийПапаша 27.9.2010, 13:00
Попытался сделать элементарный интерфейс. Запустите в редакторе и увидите. Вопрос такой. Как сделать так, чтобы при уменьшении размеров окна, кнопки меню не наезжали на заголовок? Это раз. Второе. Как сделать так, чтобы Grid занимал весь экран, а то автоматически выставляются фиксированные ширина и высота?
Код

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="WpfApplicationTestX.MainWindow"
    x:Name="Window"
    Title="MainWindow" >

    <Grid x:Name="LayoutRoot" ShowGridLines="True" HorizontalAlignment="Left" Width="632">
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="3*">
                
            </RowDefinition>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0" ShowGridLines="True">
            <Grid ShowGridLines="True"><Grid.RowDefinitions><RowDefinition></RowDefinition><RowDefinition></RowDefinition></Grid.RowDefinitions></Grid>
            <StackPanel Grid.Row="0">
            <TextBlock HorizontalAlignment="Center" Margin="0,15,0,0" Padding="5" FontSize="21.333"><Run Text="Сайт посвящённый брэйнфаку. Мазафака."/></TextBlock>
            </StackPanel>
            <StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center">
            <Button Padding="3" Margin="1" Opacity="0.75">Menu item 1</Button>
            <Button Padding="3" Margin="1" Opacity="0.75">Menu item 2</Button>
            <Button Padding="3" Margin="1" Opacity="0.75">Menu item 3</Button>
            <Button Padding="3" Margin="1" Opacity="0.75">Menu item 4</Button>
            <Button Padding="3" Margin="1" Opacity="0.75">Menu item 5</Button>
        </StackPanel>
            <Grid.Background>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <GradientStop Color="#FF896C6C"/>
                    <GradientStop Color="#FFFFAAAA" Offset="1"/>
                </LinearGradientBrush>
            </Grid.Background>
            
        </Grid>    
        
        <Grid Grid.Row="1">
            <Grid>        
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="0.203*"></ColumnDefinition>
                    <ColumnDefinition Width="0.594*"></ColumnDefinition>
                    <ColumnDefinition Width="0.203*"></ColumnDefinition>
                </Grid.ColumnDefinitions>
                
                <Grid Grid.Column="0">
                    <Grid.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FF896C6C" Offset="1"/>
                        <GradientStop Color="#FFFFAAAA"/>
                    </LinearGradientBrush>
                    </Grid.Background>
                </Grid>
                <Grid Grid.Column="2">
                    <Grid.Background>
                    <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                        <GradientStop Color="#FF896C6C" Offset="1"/>
                        <GradientStop Color="#FFFFAAAA"/>
                    </LinearGradientBrush>
                    </Grid.Background>
                </Grid>
            </Grid>
        </Grid>
    </Grid>
</Window>

Автор: CYBERDREAM 27.9.2010, 13:05
Код

<Grid x:Name="LayoutRoot" ShowGridLines="True" HorizontalAlignment="Stretch" Width="Auto">
 ?

Автор: ДобренькийПапаша 27.9.2010, 13:12
За это уже спасибо, а как быть с наездом кнопок (меню) на заголовк (текстблок)? Или такие вещи надо в canvas делать?

Автор: CYBERDREAM 27.9.2010, 13:31
я бы использовал тогда DockPanel как основу, вверху поставить Grid (с заголовком и кнопками) и Align = top
а внизу уже вся остальная лабуда

Автор: WolfTheGrey 27.9.2010, 13:59
Есть еще контрол типа бордера не помню как называется. Так суть в том, что при сжимании формы  сжимается и содержимое, а распорядок не изменяется. ТОесть ни кто ни на кого не наезжает.

Автор: exBlender 27.9.2010, 16:01
Вы запутались в сетках. Почувствуйте разницу:

Код

    <Grid x:Name="LayoutRoot" ShowGridLines="True" >
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition />
        </Grid.RowDefinitions>
        
            <Grid ShowGridLines="True">
             <Grid.Background>
                 <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                     <GradientStop Color="#FF896C6C"/>
                     <GradientStop Color="#FFFFAAAA" Offset="1"/>
                 </LinearGradientBrush>
             </Grid.Background>
             <Grid.RowDefinitions>
                 <RowDefinition Height="Auto"/>
                 <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>
                
                <TextBlock HorizontalAlignment="Center" Margin="0,15,0,0" Padding="5" FontSize="21.333"><Run Text="Сайт посвящённый брэйнфаку. Мазафака."/></TextBlock>
            
             <StackPanel Grid.Row="1" Orientation="Horizontal" VerticalAlignment="Bottom" HorizontalAlignment="Center">
                 <Button Padding="3" Margin="1" Opacity="0.75" Content="Menu item 1"/>
                 <Button Padding="3" Margin="1" Opacity="0.75" Content="Menu item 2"/>
                 <Button Padding="3" Margin="1" Opacity="0.75" Content="Menu item 3"/>
                 <Button Padding="3" Margin="1" Opacity="0.75" Content="Menu item 4"/>
                 <Button Padding="3" Margin="1" Opacity="0.75" Content="Menu item 5"/>
             </StackPanel>
                
            </Grid>

        
         <Grid Grid.Row="1">
...

Автор: ДобренькийПапаша 28.9.2010, 10:34
Понял, exBlender, спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)