You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF DataGrid单元格Expander聚焦展开失焦收缩失效问题排查

问题分析与解决方案

首先,咱们来拆解一下你的问题:Expander能在单元格获得焦点时展开,但失去焦点时不收缩,核心问题出在绑定配置的细节上,还有XAML里的一个小笔误。

1. 先修正XAML的拼写错误

你写的</DataGirdTemplateColumn.CellTemplate>里多了个r,应该是</DataGridTemplateColumn.CellTemplate>——这个笔误会导致XAML解析异常,虽然可能不是收缩失效的直接原因,但先把它改了再说。

2. 移除多余的UpdateSourceTrigger配置

你在绑定里加了UpdateSourceTrigger=LostFocus,但这个属性只对TwoWay或OneWayToSource绑定生效,你的绑定是OneWay(源→目标),这个设置完全没用,反而可能干扰绑定的更新逻辑。删掉它之后,绑定会在源属性(DataGridCell的IsFocused)变化时自动更新目标(Expander的IsExpanded)。

修改后的绑定代码:

<Expander VerticalAlignment="Stretch" 
          IsExpanded="{Binding Path=IsFocused, Mode=OneWay, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridCell}}">
    <!-- Expander.Content -->
</Expander>

3. 如果还是不收缩,改用DataTrigger方案

如果上面的修改后仍然没效果,大概率是直接绑定的响应不够稳定(比如Expander手动操作后绑定的优先级问题),这时候用DataTrigger来实现会更可靠:

<DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
        <Expander VerticalAlignment="Stretch">
            <Expander.Style>
                <Style TargetType="Expander">
                    <!-- 默认收缩状态 -->
                    <Setter Property="IsExpanded" Value="False"/>
                    <!-- 单元格获得焦点时展开 -->
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=IsFocused, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType=DataGridCell}}" 
                                     Value="True">
                            <Setter Property="IsExpanded" Value="True"/>
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </Expander.Style>
            <!-- 这里放你的Expander.Content内容 -->
        </Expander>
    </DataTemplate>
</DataGridTemplateColumn.CellTemplate>

这种方式通过触发器监听单元格的焦点状态,一旦IsFocused变为false,Expander会自动回到默认的收缩状态,比直接绑定更稳定,也能避免手动操作Expander导致的绑定覆盖问题。

补充说明

你的DataGrid配置SelectionMode="Single"和SelectionUnit="Cell"是完全没问题的,这两个设置不会影响单元格的焦点状态,所以不是问题根源。

内容的提问来源于stack exchange,提问作者Felix D.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:38:37