как переместить кнопку в WPF - PullRequest
1 голос
/ 01 июля 2011

XAML код ниже

<Window x:Class="DenemeWpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <DockPanel Width="Auto"
                   VerticalAlignment="Stretch"
                   Height="Auto"
                   HorizontalAlignment="Stretch"
                   Grid.ColumnSpan="1"
                   Grid.Column="0"
                   Grid.Row="0"
                   Margin="0,0,0,0"
                   Grid.RowSpan="1">

            <StackPanel>
                <StackPanel.Background>
                    <LinearGradientBrush>
                        <GradientStop Color="White" Offset="0" />
                        <GradientStop Color="DarkKhaki" Offset=".3" />
                        <GradientStop Color="DarkKhaki" Offset=".7" />
                        <GradientStop Color="White" Offset="1" />
                    </LinearGradientBrush>
                </StackPanel.Background>
                <StackPanel Margin="10">
                    <Button Name="simpleButton"
                            Click="simpleButtonClick"
                            KeyDown="simpleButton_KeyDown">Simple</Button>
                    <Button Name="cubeButton"
                            Click="cubeButtonClick">Cube</Button>
                </StackPanel>
            </StackPanel>
            <Viewport3D Name="mainViewport"
                        ClipToBounds="True">
                <Viewport3D.Camera>
                    <PerspectiveCamera FarPlaneDistance="100"
                                       LookDirection="-11,-10,-9"
                                       UpDirection="0,1,0"
                                       NearPlaneDistance="1"
                                       Position="11,10,9"
                                       FieldOfView="70" />
                </Viewport3D.Camera>
                <ModelVisual3D>
                    <ModelVisual3D.Content>
                        <DirectionalLight Color="White" Direction="-2,-3,-1" />
                    </ModelVisual3D.Content>
                </ModelVisual3D>
            </Viewport3D>
        </DockPanel>
    </Grid>
</Window>

это внутри XAML.cs

private void simpleButton_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.P) {
        //something to move the simpleButton
    }
}

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

Ответы [ 3 ]

6 голосов
/ 01 июля 2011

если анимация не требуется, просто сделайте

if (e.Key == Key.P)
{
   cubeButton.Margin = new Thickness(60, 50, 50, 60);
}

слева, сверху, справа, снизу должны быть цифры

и вы добавили keydown event к кнопке, чтобы кнопка была сфокусирована, чтобы получить событие keydown

также посмотрите на TranslateTransform в WPF

2 голосов
/ 03 июля 2011

для перемещения кнопки в сетке необходимо обработать событие keydown главного окна, см. Следующий пример:

       private void Grid_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.P)
        {
            button1.Margin = new Thickness(2, 2, 2, 2);
        }
    }

Также, если вы не объяснили, как не будет фокусироваться на событии KeyDown активной формы отозваны.

Bye

2 голосов
/ 01 июля 2011

Вы можете перемещать это многими способами. Вы можете поместить его в элемент управления Canvas и изменить его Canvas.Left или Canvas.Top. Вы можете поместить его в Grid и изменить его Grid.Row или Grid.Column. Вероятно, наиболее гибкий способ - применить к нему TranslateTransform, который также переместит указанную вами сумму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...