首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OnMouseMove不被呼叫

OnMouseMove不被呼叫
EN

Stack Overflow用户
提问于 2016-04-10 18:45:12
回答 1查看 61关注 0票数 0

我怀疑问题在于XAML,但出于某种原因,OnMouseMove从未被调用过。以下是XAML:

代码语言:javascript
复制
<Window x:Class="General_Staff_AI_Testbed.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="General Staff AI Testbed" Height="990" Width="1440" WindowState="Maximized"   Icon="/General Staff AI Testbed;component/Icon1.ico" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" WindowStartupLocation="CenterOwner" >


    <DockPanel>
        <Menu DockPanel.Dock="Top">
            <MenuItem Header="_File">
                <MenuItem Header="_Open Topographical Map..." x:Name="OpenMapFile" Click="OpenMapFile_click" />
                <MenuItem Header="_Open Elevation Map..." x:Name="OpenElevationFile" Click="OpenElevationFile_click" />
            </MenuItem>
            <MenuItem Header="_About">
                <MenuItem Header="_About..."   Click="About_click"/>
            </MenuItem>
        </Menu>

        <StatusBar DockPanel.Dock="Bottom">
            <TextBlock Name="StatusBarField1">Location = X,Y</TextBlock>
            <Separator/>
            <TextBlock Name="StatusBarField2">Elevation = X</TextBlock>
            <Separator/>
            <TextBlock Name="StatusBarField3">Terrain = None</TextBlock>
            <Separator/>
            <TextBlock Name="StatusBarField4">Time 0:00</TextBlock>
            <Separator/>
        </StatusBar>



        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="1000" />
                <ColumnDefinition Width="105" />
                <ColumnDefinition Width="105" />
                <ColumnDefinition Width="105" />
                <ColumnDefinition Width="105" />
            </Grid.ColumnDefinitions>

            <Grid.RowDefinitions>
                <RowDefinition Height="50" />
                <RowDefinition Height="50" />
                <RowDefinition Height="50" />
                <RowDefinition Height="50" />
                <RowDefinition Height="*" />
                <RowDefinition Height="100" />
            </Grid.RowDefinitions>


            <Image Grid.Column="0"   Grid.RowSpan="5"  Height="700" Name="MainImage" Width="1000" HorizontalAlignment="Left" VerticalAlignment="Top"/>
            <Button Grid.Column="1"  Click="Grid_Click" Margin="6,0,0,13">Grid On/Off</Button>

        </Grid>
    </DockPanel>

这是我的C#代码(在我几年前编写的另一个程序中运行得很好):

代码语言:javascript
复制
 void OnMouseMove(object sender, System.Windows.Input.MouseEventArgs e)
 {

     string slug;
     double pixelMousePositionX = 0;
     double pixelMousePositionY = 0;

     // Get the x and y coordinates of the mouse pointer.
     System.Windows.Point position = e.GetPosition(this);

     slug = "Location = " + (int)pixelMousePositionX + "," + (int)pixelMousePositionY;
     StatusBarField1.Text = slug;

     if (this.MainImage.IsMouseOver && position.X > 22 && position.Y > 21)
         Mouse.OverrideCursor = System.Windows.Input.Cursors.Cross;
     else
         Mouse.OverrideCursor = System.Windows.Input.Cursors.Arrow;
}

无论如何,我已经确定OnMouseMove永远不会被触发。我要做的是跟踪图像上的光标(最终,当光标经过图像时,将光标更改为十字)。就这样。

正如我所说的,我怀疑问题在XAML中。也许是捆绑?提前谢谢。我肯定这是件蠢事。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-10 19:00:59

您需要将OnMouseMoveMouseMove事件绑定。在XAML中,可以这样做,就像设置属性一样。

代码语言:javascript
复制
<Image MouseMove="OnMouseMove" ... />
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36533983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档