0

我有一个 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>

单击复选框时,我会触发“已检查”事件。

有没有办法拉出一个包含扩展器的“标题”的字符串?在这个例子中,我想拉出 'expander1' 并将其分配给一个字符串。

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

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

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

感谢任何有想法的人。

4

1 回答 1

0

您可以从 CheckBox 轻松获取 Expander。只需迭代到 VisualTree 并获得最顶层父级的扩展器。在下面的示例中,我只是简单地做了一个父母。

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

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

我希望它会帮助你。

于 2012-10-25T04:48:52.050 回答