相关疑难解决方法(0)

具有列和绑定性能的 ListView

我有以下性能问题ListView

创建单个项目需要 13-30 毫秒(50 个项目超过 1 秒)。虚拟化(回收模式)已开启,但滚动 100 个项目已经很不舒服了。

起初我以为是布局问题。但原因似乎是——绑定。

有多个列,每个列单元格都有不同的模板和不同的绑定,例如:

<GridViewColumn>
    <GridViewColumn.CellTemplate>
        <DataTemplate>
            <Grid>
                <TextBlock Text="{Binding Value}"
                           Visibility="{Binding IsEditable, Converter={local:TrueToCollapsedConverter}}" />
                <Grid local:GridBehavior.Columns=",auto"
                      Visibility="{Binding IsEditable, Converter={local:FalseToCollapsedConverter}}">
                    <TextBox Text="{local:ExceptionBinding Path=Value, Converter={local:DoubleToStringConverter}}"
                             local:TextBoxBehavior.SelectAllOnFocus="True"
                             local:ListBoxBehavior.SelectListBoxItemOnFocus="True" />
                    <TextBlock Grid.Column="1" Text="{local:Lng Key=Unit.mm}" />
               </Grid>
           </Grid>
       </DataTemplate>
   </GridViewColumn.CellTemplate>
Run Code Online (Sandbox Code Playgroud)

任何单个绑定都会添加类似 0.1 毫秒的时间。有 20 列,每个单元格有 1 到 20 个绑定,因此它导致:

绑定花费大部分时间,例如屏幕截图上第一列的 2.83 毫秒,共 3.07 毫秒。

有没有办法获得一些性能?我在做一些明显的错误吗?

c# wpf profiler xaml listview

5
推荐指数
0
解决办法
153
查看次数

标签 统计

c# ×1

listview ×1

profiler ×1

wpf ×1

xaml ×1