2013-02-18 13 views
5

Quale sarà il modo corretto per ottenere ciò che viene attualmente controllato nel CheckBox. Quello che ho fatto finora non sparare un qualsiasi evento CheckBox elementi controllati:Attivazione di un evento quando la casella di controllo è selezionata per WPF

<ListBox Grid.RowSpan="3" Grid.Column="2" Grid.ColumnSpan="5" Margin="2" ItemsSource="{Binding MachinePositionList}"> 
    <ListBox.ItemTemplate> 
     <HierarchicalDataTemplate> 
      <CheckBox Content="{Binding posID}" IsChecked="{Binding IsChecked, Mode=TwoWay}"> 
       <i:Interaction.Triggers> 
        <i:EventTrigger EventName="Checked"> 
         <i:InvokeCommandAction Command="{Binding CurrentCheckedPosition}" /> 
        </i:EventTrigger> 
       </i:Interaction.Triggers>       
      </CheckBox> 
     </HierarchicalDataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Grazie mille :-).

risposta

4

È possibile utilizzare gli eventi controllato:

<CheckBox Name="myCheckBox" 
      Content="I am a checkbox!" 
      Checked="myCheckBox_Checked" 
      Unchecked="myCheckBox_Unchecked" /> 

e al codice per questi eventi è:

private void myCheckBox_Checked(object sender, RoutedEventArgs e) 
{ 
    // ... 
} 

private void myCheckBox_Unchecked(object sender, RoutedEventArgs e) 
{ 
    // ... 
} 

EDIT: appena notato che avete il contenuto per le caselle di controllo come "{Binding posID }" in modo da qualcosa che si può fare (come si dispone di un elenco di caselle di controllo) è negli eventi controllati, hanno qualcosa di simile:

if (sender != null) 
{ 
    int posID = Convert.ToInt32(((CheckBox)sender).Name); 
} 

Questo ti darà il "posID" e potrai fare quello che ti serve anche con esso. : D

+0

Questo è un controllo utente che non è collegato a nessun modello di vista. Il modello di vista verrà assegnato in base al relativo genitore. Quindi esiste un altro modo invece di attivare un evento indirizzato nel controllo stesso? Grazie – anevil

+0

È ancora possibile collegare i gestori di eventi, basta farlo attraverso il codice in cui si aggiungono le caselle di controllo. per esempio tempCheckbox.Checked + = new RoutedEventHandler (myCheckbox_Checked); – Rhexis

+0

Giusto per chiarire, stai aggiungendo le checkbox a listview attraverso un altro usercontrol/window? – Rhexis

Problemi correlati