2013-02-18 51 views
5

什麼是正確的方式來獲取CheckBox中當前正在檢查的內容。我做了什麼至今不會開火檢查了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> 

感謝:-)很多。

回答

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) 
{ 
    // ... 
} 

編輯: 只注意到你有作爲「爲複選框內容{結合posID }「所以你可以做的事情(因爲你有一個複選框列表)是在檢查事件,有這樣的事情:

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

這會給你「posid」,你也可以做它你需要的。 :D

+0

這是一個不附加到任何視圖模型的用戶控件。視圖模型將根據其父項進行分配。那麼是否有其他方式,而不是在控件本身中觸發路由事件?謝謝 – anevil 2013-02-18 08:03:07

+0

您仍然可以附加事件處理程序,只需通過添加複選框的代碼即可完成。例如tempCheckbox.Checked + = new RoutedEventHandler(myCheckbox_Checked); – Rhexis 2013-02-18 08:29:06

+0

只是爲了澄清,你是通過另一個用戶控件/窗口添加複選框到列表視圖? – Rhexis 2013-02-18 08:32:06

相關問題