2013-02-18 15 views
5

CheckBoxで現在チェックされている内容を取得する正しい方法は何でしょうか。たくさんの:-)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> 

ありがとう:何私がこれまで行っていることは確認されCheckBox項目に任意のイベントを発射しません。

答えて

4

あなたがチェックイベントを使用することができます

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

をこれらのイベントのためのコードは次のとおりです。

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

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

EDIT:POSIDバインディング{」として はちょうどあなたがチェックボックスのコンテンツを持って気づきました} "チェックボックスのリストがあるので、チェックされたイベントには次のようなものがあります:

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

これはあなたに "posID"を与え、あなたもそれで必要なことをすることができます。 :D

+0

これはビューモデルには添付されていないユーザーコントロールです。ビューモデルはその親に従って割り当てられます。では、コントロール自体にルーティングされたイベントをトリガーするのではなく、他の方法がありますか?ありがとう – anevil

+0

イベントハンドラをアタッチすることはできますが、チェックボックスを追加するコードから実行してください。例:tempCheckbox.Checked + =新しいRoutedEventHandler(myCheckbox_Checked); – Rhexis

+0

明確にするために、別のusercontrol/windowを使ってチェックボックスをlistviewに追加していますか? – Rhexis

関連する問題