当用户在标题区域内单击时,我想防止Expander展开/折叠。这基本上是与Q 1396153相同的问题,但是我希望得到更有利的回答:)

有无创方法可以做到这一点吗?我不确定如何将行为附加到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>

最佳答案

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

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

关于wpf - 如何吞下Expander.Header内部的下拉行为?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2915435/

10-12 17:26