WPF Expander,从子元素中获取Header名称

时间:2012-10-25 02:41:03

标签: wpf expander

我有一个WPF扩展器,例如:

    <Expander Canvas.Left="251" Canvas.Top="425" Header="expander1" Height="100" Name="expander1">
        <Grid>
            <StackPanel Margin="10,4,0,0">
                <CheckBox Margin="4" Content="Option 1" Checked="chk_DoThis" />
                <CheckBox Margin="4" Content="Option 2" Checked="chk_DoThis" />
                <CheckBox Margin="4" Content="Option 3" Checked="chk_DoThis" />
            </StackPanel>
        </Grid>
    </Expander>

单击复选框后,我将关闭“已检查”事件。

有没有办法拉出一个包含Expander'Header'的字符串?在这个例子中,我想拉出'expandder1'并将其分配给一个字符串。

我尝试了几种方法来做到这一点,但无法让它发挥作用。我使用TreeViewItems并使用Header.Parent.ToString()来完成同样的概念来获得我想要的东西。这里没有运气。这就是我所说的:

    string child = ((TreeViewItem)((TreeViewItem)((TreeView)sender).SelectedItem)).Header.ToString();

有没有人知道我可以为Expander示例执行此操作的方法。谷歌搜索和搜索这个网站没有回报。这可能很容易,我只是忽略它。

感谢任何有想法的人。

1 个答案:

答案 0 :(得分:0)

您可以从CheckBox轻松获取Expander。只需迭代到VisualTree并获得最顶级父级的Expander。我只是在下面的例子中只做了一个父母。

void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            Expander expander = (Expander)checkBox.Parent;

            if (expander != null)
            {
                string str = expander.Header.ToString();
                Debug.WriteLine(str);
            }
        }

我希望它会对你有所帮助。