2009-06-22 22 views
0

Ich habe ein Usercontrol, ein von VS erzeugt standardmäßig nur Textblock wird hinzugefügt:WPF RoutedEvent von Usercontrol Handhabung

<UserControl x:Class="MyNameSpace.Presentation.MyControl" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
x:Name="myControl"> 
    <Grid> 
     <TextBlock x:Name="SomeTextBox" Text="SomeText"></TextBlock> 
    </Grid> 

Nun habe ich mehrere Instanzen dieser Kontrolle in WrapPanel übergeordnete Steuerung dynamisch aus der Code dahinter. Ich möchte alle Klicks mit der linken Maustaste von MyControl-Instanzen verarbeiten. Ich habe folgenden Code:

<UserControl x:Class="Minimo.Presentation.FirstParent" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:Presentation="clr-namespace:Minimo.Presentation" 
Height="300" Width="300"> 
<WrapPanel Name="wrapPanelOfMyControls" MyControl.MouseLeftButtonDown="WrapPanel1_OnMouseLeftButtonDown"> 
</WrapPanel> 

im Ereignishandler ich eine Aktion zu machen, und es funktioniert. Allerdings erhalte ich beim Bearbeiten der XAML-Datei den folgenden Fehler: Die anfügbare Eigenschaft 'MouseLeftButtonDown' wurde im Typ 'MyControl' nicht gefunden. Wie behebe ich das?

Antwort

2

Dies ist nur ein Fehler mit dem XAML-Compiler/Designer und kann sicher ignoriert werden. Sie können es jedoch möglicherweise "reparieren", indem Sie einen Typ angeben, der Ihnen vertrauter ist:

+0

Danke, das hat das Problem gelöst. Andererseits wird der Wrap Panel-Handler nicht dazu gebracht, alle Mausklick-Ereignisse der untergeordneten Steuerelemente zu verarbeiten, auch nicht von MyControl-Instanzen? (Während nur MyControl.MouseLeftButtonDown nur von diesem Steuerelement explizit eingeben) –

+0

Beide Formen tun genau die gleiche Sache - sie beziehen sich nur auf das gleiche Routingereignis auf unterschiedliche Weise. Und da es sich um ein Routing-Ereignis handelt, erhält das Panel immer die Möglichkeit, es zu verarbeiten, wenn ein Kind das PreviewMouseLeftButtonDown-Ereignis nicht bereits als behandelt markiert hat. –

+0

Dieser Fehler existiert noch, mehr als 5 Jahre später! – Ashe