2012-06-05 48 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,然后将其转换为适当的类型。你有它!

相关问题