3

当用户在标题区域内单击时,我想防止扩展器展开/折叠。这与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>
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 并做了一些 Grid/fixed layout/Panel.ZIndex 诡计以使其看起来内容在 Expander.Header ……但事实并非如此。这行得通,但是太可怕了。

于 2010-05-26T18:24:22.337 回答