2016-04-10 30 views
0

Ich vermute, dass das Problem mit dem XAML ist, aber aus irgendeinem Grund wird OnMouseMove nie aufgerufen. Hier ist die XAML:OnMouseMove wird nicht aufgerufen

<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> 

Und das ist mein C# -Code (die in einem anderen Programm funktioniert gut, dass ich ein paar Jahren schrieb vor):

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; 
} 

Wie dem auch sei, ich habe festgestellt, dass OnMouseMove nie wird ausgelöst. Ich versuche, den Cursor über das Bild zu bewegen (und eventuell den Cursor zu einem Kreuz zu machen, wenn er über dem Bild ist). Das ist es.

Wie gesagt, ich vermute, dass das Problem in der XAML ist. Eine Bindung vielleicht? Vielen Dank im Voraus. Ich bin mir sicher, dass es etwas Dummes ist.

Antwort

1

Sie müssen OnMouseMove mit MouseMove Ereignis binden. In XAML können Sie dasselbe tun, als würden Sie eine Eigenschaft festlegen.

<Image MouseMove="OnMouseMove" ... /> 
+0

Vielen Dank! Ich dachte, es wäre verbindlich. Ich habe in ein paar Jahren keine XAML geschrieben. – zetar