WPF che gestisce RoutedEvent da UserControl
-
06-07-2019 - |
Domanda
Ho un UserControl, quello predefinito generato da VS, è stato aggiunto solo TextBlock:
<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>
Ora inserisco dinamicamente diverse istanze di questo controllo in WrapPanel del controllo principale dal codice sottostante. Voglio gestire tutti i clic del pulsante sinistro del mouse dalle istanze di MyControl. Ho il seguente codice:
<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>
Nel gestore dell'evento faccio qualche azione e funziona. Tuttavia ottengo il seguente errore durante la modifica del file XAML: La proprietà collegabile 'MouseLeftButtonDown' non è stata trovata nel tipo 'MyControl'. Come risolvere questo problema?
Soluzione
Questo è solo un bug con il compilatore / designer XAML e può essere tranquillamente ignorato. Tuttavia, potresti essere in grado di " correggere " specificando un tipo di cui è più intimamente consapevole:
UIElement.MouseLeftButtonDown="WrapPanel1_OnMouseLeftButtonDown"