我有一个包含多个控件的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 :(得分:0)
您无法像这样访问它,因为DataTemplates没有代码生成,即 optionsCombo ComboBox在编译时并不存在,因此错误。要在后面的代码中操作它,你需要使用VisualTreeHelper,它在网上很好地描述。只需获取发件人的父Panel,然后按名称查找您的ComboBox,然后将其转换为正确的类型。你有它!