wpf - 如何吞下 Expander.Header 中的下拉行为?

标签 wpf expander routed-events

当用户在页眉区域内单击时,我想阻止扩展器展开/折叠。这基本上与 Q 1396153 相同的问题, 但我会很感激一个更有利的答案:)

有没有非侵入性的方法来做到这一点?我不确定如何将行为附加到 Expander.Header 内容以防止鼠标点击。我愿意通过固定的网格布局在扩展器本身之外的内容中 float ,但我并不热衷于解决方案。想法?

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/

相关文章:

c# - RoutedEvent 隧道未到达子节点

c# - Datagrid MVVM WPF中的复选框

c# - MouseDoubleClick 事件不会冒泡

wpf - 直接路由事件问题

c# - 以编程方式添加多个扩展器事件将不起作用

WPF 限制扩展器的大小

extjs rowexpander 如何展开所有

c# - 从 ViewModel 关闭窗口

wpf mousecapture 立即强制释放

wpf - 合并单元格在单元格上取消合并双击 RadGridview