0

次のような WPF Expander があります。

    <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>

チェックボックスがクリックされると、'Checked' イベントが発生します。

Expander の「ヘッダー」を含む文字列を引き出す方法はありますか? この例では、「expander1」を取り出して文字列に割り当てたいと考えています。

これを行ういくつかの方法を試しましたが、うまくいきませんでした。TreeViewItems を使用し、Header.Parent.ToString() を使用して、これと同じ概念を実行して、必要なものを取得しました。ここでは運がありません。これは私が言及しているものです:

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

Expander の例でこれを行う方法を知っている人はいますか? このサイトをグーグルで検索しても、何も返されませんでした。それはおそらく簡単なことであり、私はそれを見落としています。

いくつかのアイデアを持っている人に感謝します。

4

1 に答える 1

0

Expander は CheckBox から簡単に取得できます。VisualTree を反復処理して、最上位の親の Expander を取得するだけです。以下の例では、親を 1 つだけ実行しました。

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 に答える