3

ユーザーがヘッダー領域内をクリックしたときにエキスパンダーが拡大/崩壊しないようにしたいと思います。これは基本的にQ1396153と同じ質問ですが、もっと好ましい答えをいただければ幸いです:)

これを行うための非侵襲的な方法はありますか?マウスクリックを防ぐためにExpander.Headerコンテンツに動作をアタッチする方法が正確にわかりません。私は固定グリッドレイアウトを介してエキスパンダー自体の外側にコンテンツをフロートさせたいと思っていますが、解決策には熱心ではありません。アイデア?

XamlPadサンプルXAML:

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys="clr-namespace:System;assembly=mscorlib" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <Expander>
    <Expander.Header><TextBlock>
        When I click this text, 
        I don't want to trigger expansion/collapse! Only when I click the 
        expander button do I want to trigger an expand/collapse!
    </TextBlock></Expander.Header>

    <Grid Background="Red" Height="100" Width="100" >
    </Grid>
    </Expander>
</Page>
4

2 に答える 2

3

テキストボックスでのマウスクリックがアプリケーションによって処理されないようにすることができます。

XAML:

<Expander>
    <Expander.Header>
        <TextBlock MouseDown="TextBlock_MouseDown"> 
            When I click this text,  
            I don't want to trigger expansion/collapse! Only when I click the  
            expander button do I want to trigger an expand/collapse!
                    </TextBlock>
        </Expander.Header>
    <Grid Background="Red" Height="100" Width="100" >
    </Grid>
</Expander>

背後にあるコード:

private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
{
    e.Handled = true;
}
于 2010-05-26T22:06:36.207 に答える
0

これが忌まわしいものかどうかはわかりませんが、コンテンツをExpander.Headerから移動し、グリッド/固定レイアウト/ Panel.ZIndexのトリックを実行して、コンテンツがExpander.Headerにあるように見せました。 ...しかし、そうではありません。これは機能しますが、ひどいです。

于 2010-05-26T18:24:22.337 に答える