代码之家  ›  专栏  ›  技术社区  ›  Peter Seale

如何在扩展器中接受下拉行为?

  •  3
  • Peter Seale  · 技术社区  · 16 年前

    我想防止用户在标题区域内单击时展开/折叠扩展器。这基本上是同一个问题 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>
    
    2 回复  |  直到 9 年前
        1
  •  3
  •   Wallstreet Programmer    16 年前

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

    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;
    }
    
        2
  •  0
  •   Peter Seale    16 年前

    我不知道这是否令人讨厌,但是,我已经将内容从Expander.Header中移出,并进行了一些Grid/fixed layout/Panel.ZIndex欺骗,使其看起来内容在Expander.Header中…但事实并非如此。这很管用,但很可怕。