I';我试图用c#和xaml在画布上移动我的图像

I';我试图用c#和xaml在画布上移动我的图像,c#,xaml,C#,Xaml,我试图在WPF应用程序中使用C#在画布上移动PNG 我试过使用额外的指令。我用过我能想到的每一个关键词。我已经创建了事件处理程序,但事件似乎没有正确触发。我的形象无法移动 namespace Pazulu { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window {

我试图在WPF应用程序中使用C#在画布上移动PNG

我试过使用额外的指令。我用过我能想到的每一个关键词。我已经创建了事件处理程序,但事件似乎没有正确触发。我的形象无法移动

namespace Pazulu {
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window {
        public MainWindow() {
            InitializeComponent();
        }

        private void Image_KeyDown(object sender, KeyEventArgs e) {
            var alpha = Key.Space;
            if (e.Key == alpha)
                Canvas.SetLeft(pazulu, 300);
        }
    }
}
名称空间Pazulu{ /// ///MainWindow.xaml的交互逻辑 /// 公共部分类主窗口:窗口{ 公共主窗口(){ 初始化组件(); } 私有void Image_KeyDown(对象发送方,KeyEventArgs e){ var alpha=键空间; 如果(e.Key==alpha) Canvas.SetLeft(pazulu,300); } } }
没有错误消息。预期结果至少应该是在调试时捕获事件,但未检测到任何事件。我的形象处于休眠状态

您可能需要订阅窗口上的KeyDown事件。比如:

<Window x:Class="WpfApp3.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp3"
        mc:Ignorable="d"
        Title="MainWindow" Height="450" Width="800" KeyDown="MainWindow_OnKeyDown">
    <Canvas>
        <Button Name="MyButton" Canvas.Right="10">Test</Button>
    </Canvas>
</Window>


试验
使用System.Windows;
使用System.Windows.Controls;
使用System.Windows.Input;
命名空间WpfApp3
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有void主窗口\u OnKeyDown(对象发送方,KeyEventArgs e)
{
如果(e.Key==Key.Right)
{
//不管怎样,只是一个例子
Canvas.SetRight(MyButton,Canvas.GetRight(MyButton)+5);
}
}
}
}

图像不太可能实际接收到关键事件。我会在窗口上添加一个keydown事件处理程序(并验证它是否触发),然后在那里设置图像位置(就像您已经做的那样)复制它。我会将事件放在窗口上,看看它是否拾取它。谢谢你的帮助。
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;

namespace WpfApp3
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void MainWindow_OnKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Right)
            {
                //Whatever, just an example
                Canvas.SetRight(MyButton, Canvas.GetRight(MyButton) + 5);
            }
        }
    }
}