在后面的代码中访问DataTemplate中的另一个控件

时间:2012-06-05 13:41:02

标签: wpf 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中的其他控件?

1 个答案:

答案 0 :(得分:0)

您无法像这样访问它,因为DataTemplates没有代码生成,即 optionsCombo ComboBox在编译时并不存在,因此错误。要在后面的代码中操作它,你需要使用VisualTreeHelper,它在网上很好地描述。只需获取发件人的父Panel,然后按名称查找您的ComboBox,然后将其转换为正确的类型。你有它!