Проблема позиционирования управления WPF - PullRequest
0 голосов
/ 24 января 2011

я изучаю WPF, вот мой XAML.

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1"
    Height="300"
    Width="634">
<StackPanel>
    <Button Height="35"
            Width="89"
            Name="p1">Hello</Button>
    <Border CornerRadius="5"
            BorderThickness="1"
            BorderBrush="Black"
            Height="35"
            Width="254"
            Margin="91,192,150,79">
        <TextBox HorizontalAlignment="Left"
                 VerticalAlignment="Center"
                 Background="Transparent"
                 BorderThickness="0"
                 Height="35"
                 Width="250"
                 Name="txtContents" />
    </Border>
    <Button Height="23"
            Name="button1"
            Width="75">Button</Button>
</StackPanel>

текстовое поле кнопки отображается, но проблема в том, что я не могу перетащить элемент управления в другое местокак это исправить.пожалуйста помоги.спасибо

Ответы [ 2 ]

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

Если вы имеете в виду, что не можете перетащить элементы управления Button в разные места, это потому, что они содержатся внутри StackPanel - размещая их друг над другом.

Если вы измените значение StackPanel на Grid, у вас будет возможность перетаскивать его в стиле холста.

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1"
    Height="300"
    Width="634">
<Grid>
    <Button Height="35"
            Width="89"
            Name="p1">Hello</Button>
    <Border CornerRadius="5"
            BorderThickness="1"
            BorderBrush="Black"
            Height="35"
            Width="254"
            Margin="91,192,150,79">
        <TextBox HorizontalAlignment="Left"
                 VerticalAlignment="Center"
                 Background="Transparent"
                 BorderThickness="0"
                 Height="35"
                 Width="250"
                 Name="txtContents" />
    </Border>
    <Button Height="23"
            Name="button1"
            Width="75">Button</Button>
</Grid>

Этот вопрос может пролить свет на то, где использовать Grid s и StackPanel s.

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

Если под «возможностью перетаскивания элемента управления в другое место» вы говорите о перемещении элемента управления с помощью Expression Blend или Visual Studio Designer, вам нужно изменить StackPanel на Grid

Так бы и стало ...

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1"
    Height="300"
    Width="634">
<Grid>
    <Button Height="35"
            Width="89"
            Name="p1">Hello</Button>
    <Border CornerRadius="5"
            BorderThickness="1"
            BorderBrush="Black"
            Height="35"
            Width="254"
            Margin="91,192,150,79">
        <TextBox HorizontalAlignment="Left"
                 VerticalAlignment="Center"
                 Background="Transparent"
                 BorderThickness="0"
                 Height="35"
                 Width="250"
                 Name="txtContents" />
    </Border>
    <Button Height="23"
            Name="button1"
            Width="75">Button</Button>
</Grid>
...