0

我有一个包含多个控件的 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 中的其他控件?

4

1 回答 1

0

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

于 2012-06-05T13:55:17.433 回答