我想防止当用户单击标题区域内时,扩展器会扩展/崩溃。这基本上是与 Q 1396153, ,但我很感谢一个更有利的答案:)

有没有侵入性的方法?我不确定如何确切地将行为附加到扩展器中。我愿意通过固定的网格布局在扩展器本身之外的内容中浮动,但我不热衷于解决方案。想法?

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

其他提示

我不知道这是否是可憎的,但是,我已经将内容移出了扩展器。 ...但不是。这有效,但这太可怕了。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top