17 messaggi dal 16 novembre 2010
Ciao a tutti,
vorrei risolvere questo problema:
ho una Listbox i cui items sono Datatemplate. Ho la necessità di avere l'evento doubleClick all'interno dell'item.

Così funziona:
<ListBox ItemsSource="{Binding Source={StaticResource myCollectionView}}">
   <ListBox.ItemContainerStyle>
      <Style TargetType="ListBoxItem">
        <EventSetter Event="MouseDoubleClick" 
         Handler="DoubleClickCommand" />
      </Style>
    </ListBox.ItemContainerStyle>
   <ListBox.ItemTemplate>                    
      <DataTemplate>
              ...          
       </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


Nel code behind ho l'event
private void DoubleClickCommand(object sender, MouseEventArgs e)
{
...
}


Vorrei utilizzare l'MVVM ed in particolare i RelayCommand. Come posso utilizzare RelayCommand per il doubleclick del mouse all'interno del datatemplate?

Grazie a tutti
53 messaggi dal 17 maggio 2010
Ciao,
devi usare la proprietà "InputBindings" del pannello (o dell'elemento sulla quale vuoi fare doppio click) che usi come Item, dentro imposti il MouseBinding con la MouseAction a LeftDoubleClick, infine fai il binding del command al tuo ICommand. Ricorda che devi impostare il relative source alla finestra o al controllo che contiene il viewmodel come datacontext.

esempio :
<ListBox ItemsSource="{Binding MyCollection}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Width="300">
                        <StackPanel.InputBindings>
                            <MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DoubleClickCommand, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}}" CommandParameter="{Binding}"/>
                        </StackPanel.InputBindings>
                        <TextBlock Text="{Binding}"/>        
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>


spero ti sia utile.
A presto.
17 messaggi dal 16 novembre 2010
Grazie. Molto interessante. Non ci sarei mai arrivato

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.