2012-06-05 53 views
0

我有一個包含多個控件的DataTemplate。其中一個控件是一個按鈕,需要訪問其他控件中的DataTemplate在代碼背後的代碼中訪問DataTemplate中的另一個控件

<DataTemplate> 
    <StackPanel> 
     <ComboBox x:Name="optionsCombo" > 
      <ComboBoxItem Content="Option1" /> 
      <ComboBoxItem Content="Option2" /> 
      <ComboBoxItem Content="Option3" /> 
     </ComboBox> 
     <Button Name="DoSomethingButton" Margin="10" Click="DoSomethingButton_Click">Do Something</Button> 
    </StackPanel> 
</DataTemplate> 

在代碼背後的按鈕點擊事件,如果我試圖通過名稱訪問的ComboBox這樣的:

private void DoSomethingButton_Click(object sender, RoutedEventArgs e) 
{ 
    ComboBoxItem myItem = (ComboBoxItem)optionsCombo.SelectedItem; 
} 

我得到一個錯誤:「‘optionsCombo’這個名字不會在目前情況下存在」

所以,我怎麼訪問其他控件中的DataTemplate從按鈕單擊事件?

回答

0

您不能像這樣訪問它,因爲DataTemplates沒有生成代碼,即選項Combo ComboBox在編譯時間中並不存在,因此錯誤。要在後面的代碼中操作它,您需要使用VisualTreeHelper,它在網上很好地描述。只需獲取發件人的父面板,然後按名稱查找您的ComboBox,然後將其轉換爲適當的類型。你有它!

相關問題