Wpf 如何在Expander.Header中接受下拉行为?

Wpf 如何在Expander.Header中接受下拉行为?,wpf,expander,routed-events,Wpf,Expander,Routed Events,我想防止用户在标题区域内单击时扩展器展开/折叠。这个问题基本上与之相同,但我希望得到一个更有利的答案:) 有没有一种非侵入性的方法可以做到这一点?我不确定如何将行为附加到Expander.Header内容以防止鼠标点击。我愿意通过固定的网格布局在扩展器之外的内容中浮动,但我对解决方案不感兴趣。想法 XamlPad样本XAML: <Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:sys=

我想防止用户在标题区域内单击时扩展器展开/折叠。这个问题基本上与之相同,但我希望得到一个更有利的答案:)

有没有一种非侵入性的方法可以做到这一点?我不确定如何将行为附加到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>

当我点击这个文本时,
我不想触发膨胀/崩溃!只有当我点击
扩展器按钮我是否要触发展开/折叠!

我不知道这是否令人讨厌,但是,我已经将内容移出了Expander.Header,并进行了一些网格/固定布局/Panel.ZIndex欺骗,使内容看起来好像在Expander.Header中……但事实并非如此。这是可行的,但很可怕。

您可以阻止应用程序处理鼠标在文本框上的单击

XAML:


谢谢我还没有尝试过,但我乐观地认为它会解决问题。请注意:此解决方案不遵循严格的MVVM方法。通过将代码移动到附加行为或将Expander类子类化,可以实现任何代码隐藏(我猜您指的是严格的MVVM方法)。
<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;
}