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?
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) –
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. –
Dieser Fehler existiert noch, mehr als 5 Jahre später! – Ashe