能够在扩展器上任意位置选择扩展

时间:2017-07-12 20:39:48

标签: c# wpf expander

我正在使用WPF C#并注意到当我点击扩展器的按钮或标题(单词)时我的扩展器将会展开和折叠,但是当我点击标题旁边的扩展器部分时它不会展开。

奇怪的是,当点击扩展器旁边的相同位置时,它会折叠扩展器。

那么有谁知道如何允许点击整个扩展器来展开和折叠它?

非常感谢任何帮助!

<Expander ExpandDirection="Down" Width="Auto" Padding="4" Expanded="Expander_Expanded">
    <Expander.Style>
        <Style TargetType="Expander">
            <!--<Setter Property="IsExpanded" Value="{Binding XPath=@Name, Converter={StaticResource ExpandConverter}}"  />-->
            <Setter Property="IsExpanded" Value="{Binding XPath=@Expand}" />
            <Setter Property="Header">
                <Setter.Value>
                    <MultiBinding Converter="{StaticResource NameConverter}">
                        <Binding XPath="@Name" />
                    </MultiBinding>
                </Setter.Value>
            </Setter>

            <Setter Property="FontWeight" Value="Bold" />

            <Style.Triggers>
                <DataTrigger Binding="{Binding IsExpanded,RelativeSource={RelativeSource Self}}" Value="True">
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Expander.Style>
    <ListBox Name="itemsList"
        ItemsSource="{Binding XPath=UpgradeAction}"
        ItemTemplate="{StaticResource dtListItemTemplate}"
        SelectionChanged="listItems_SelectionChanged"
        Style="{StaticResource styleListBoxUpgradeAction}"
        ItemContainerStyle="{StaticResource styleListBoxItemUpgradeAction}"
        MouseDoubleClick="itemsList_MouseDoubleClick">
    </ListBox>
</Expander>

2 个答案:

答案 0 :(得分:0)

或许可以查看 controltemplate ?您还可以使用点击事件查看鼠标是否位于标题部分,并使其成为可重复使用的行为

答案 1 :(得分:0)

问题是没有设置扩展器的宽度,所以它是自动的。因此它在关闭时起作用,因为打开时的宽度设置为整个扩展器。但是,它在折叠时不起作用,因为折叠时,扩展器宽度仅设置为标头所在。因此,我将宽度更改为固定值,并允许我按下扩展器顶部的任何位置来打开和关闭它。