Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 在代码隐藏中访问DataTemplate中的另一个控件_Wpf_Datatemplate - Fatal编程技术网

Wpf 在代码隐藏中访问DataTemplate中的另一个控件

Wpf 在代码隐藏中访问DataTemplate中的另一个控件,wpf,datatemplate,Wpf,Datatemplate,我有一个包含多个控件的数据模板。其中一个控件是需要访问datatemplate中其他控件的按钮 <DataTemplate> <StackPanel> <ComboBox x:Name="optionsCombo" > <ComboBoxItem Content="Option1" /> <ComboBoxItem Content="Option2" />

我有一个包含多个控件的数据模板。其中一个控件是需要访问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>
我收到一个错误:“当前上下文中不存在名称“optionsCombo”


那么,如何从按钮单击事件访问DataTemplate中的其他控件呢?

您不能这样访问它,因为DataTemplates没有生成代码,即optionsCombo组合框在编译时并不存在,因此出现错误。要在代码隐藏中操作它,您需要使用VisualTreeHelper,它在网络上有很好的描述。只需获取发送者的父面板,然后按名称查找组合框,然后将其转换为正确的类型。给你

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