WPF 坑爹的binding

今天测试报了一个BUG 在TD上面, BUG的内容很奇怪

“客户端除了实时浏览的已展开设备列表结构不会因切换tab窗口而变化外,其它窗口都会因切换窗口后其已展开的设备列表还原为初始状态”

我们的客户端界面左侧是有一个树的设备列表的,后面看了代码后也不明所以,为什么切换tag展开过的 树的结构会还原呢?

后面对比了一下实时浏览的treeview 发现了问题的所在。

这是实时浏览的treeview


  <TreeView x:Name="DeviceTree" 
                          Grid.Row="2" 
                          Grid.Column="0" 
                          BorderThickness="0"
                          AllowDrop="True" 
                          Focusable="False"
                          SelectedItemChanged="DeviceTree_SelectedItemChanged"
                          MouseDoubleClick="DeviceTree_MouseDoubleClick"
                          Background="{DynamicResource LeftBGBrush}">
                    <TreeViewItem x:Name="RootItem" 
                                          ItemTemplate="{StaticResource deviceTreeItemTemplate}"
                                          
                                          IsExpanded="True"
                                          ItemContainerStyle="{StaticResource deviceTreeViewItemStyle}"
                                          PreviewMouseLeftButtonDown="RootItem_PreviewMouseLeftButtonDown"
                                          PreviewMouseMove="RootItem_PreviewMouseMove">
                        <TreeViewItem.Header>
                            <Grid x:Name="root">
                                <TextBlock x:Name="text_root" Text="{x:Static lang:Strings.E_WaitingText}"  Margin="5,0,0,0" VerticalAlignment="Center" FontFamily="宋体" Foreground="#FF666666"/>
                            </Grid>
                        </TreeViewItem.Header>
                    </TreeViewItem>
                </TreeView>

这是其他tag页里面的treeview

<TreeView x:Name="DeviceTree" 
    				Grid.Row="3" 
    				Grid.Column="0" 
    				BorderThickness="0"
    				AllowDrop="True" 
    				Focusable="False"
    				Background="{DynamicResource LeftBGBrush}">
    				<TreeViewItem x:Name="RootItem" 
    					ItemTemplate="{StaticResource treeItemTemplate}"
    					ItemsSource="{Binding DeviceList}"
    					IsExpanded="True"
    					ItemContainerStyle="{StaticResource deviceTreeViewItemStyle}"
                                        PreviewMouseMove="RootItem_PreviewMouseMove">
    					<TreeViewItem.Header>
    						<StackPanel x:Name="root" Orientation="Horizontal">
    							<TextBlock x:Name="text_root" Text="root"  Margin="5,0,0,0" VerticalAlignment="Center" FontFamily="宋体" Foreground="#FF666666"/>
    						</StackPanel>
    					</TreeViewItem.Header>
    				</TreeViewItem>
    			</TreeView>
    		</Grid>

相信大家都看出来区别了 就是这句“
ItemsSource="{Binding DeviceList}"

实时浏览页面treeview 的itemsource 是在后台赋值的,所以如果在前台Binding的童鞋要注意了,页面每次出现都会重新加载update一次。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值