[WPF Bug清单](序)与之(1)——可以多选的单选ListBox
2008-12-13 13:46
519 查看
从.NET 3.0发布至今,.NET Framework相继发布了.NET 3.5和.NET3.5 SP1。其间做了两个基于WPF的项目。发现现在的WPF的BUG真的是不算少。给程序的开发带来了不少的困扰——为了避开BUG,而不得不多写很多代码。
这个“WPF BUG清单”系列,将列出笔者在项目中遇到过的WPF的各种问题,也许不一定是BUG,但是会造成开发上的不便。更感觉WPF的第一次发布实在有赶鸭子上架的嫌疑。很多东西都还没有做就发布了。(跟Silverlight 1.0一样)
先举个最简单的BUG。WPF中ListBox选中项BUG。
1<Window x:Class="ListBoxSelectionBug.DemoWindow"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:sys="clr-namespace:System;assembly=mscorlib"
5 xmlns:forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
6 Title="ListBox Selection Bug Demo" Height="300" Width="300">
7 <DockPanel Margin="12">
8 <Label Content="随便点点,他们可应该都是单选的哦。"
9 DockPanel.Dock="Top"/>
<GroupBox Header="WPF ListBox"
DockPanel.Dock="Top"
Padding="9" Margin="0,0,0,12">
<ListBox SelectionMode="Single">
<sys:String>A string value</sys:String>
<sys:String>A string value</sys:String>
<sys:String>A string value</sys:String>
</ListBox>
</GroupBox>
<GroupBox Header="Forms ListBox" Padding="9">
<WindowsFormsHost>
<forms:ListBox>
<forms:ListBox.Items>
<sys:String>A string</sys:String>
<sys:String>A string</sys:String>
<sys:String>A string</sys:String>
</forms:ListBox.Items>
</forms:ListBox>
</WindowsFormsHost>
</GroupBox>
</DockPanel>
</Window>
上面的源代码中同时列出了WPF的ListBox和WinForm的ListBox作为对比。注意在WPF的ListBox上可是特意标示出它是一个单选列表框了哦。但是结果却是这个样子。
图1. WPF ListBox Selection Bug
都是在ListBox里直接放几个String类型的值。结果WPF ListBox把几个值一样的string当成了同一个string,还变成了一个MultiSelection的ListBox。
从.NET 3.0等到了.NET 3.5 SP1,这个BUG依然怡然自得地躺在WPF里。不知道是不是微软不认为这是一个BUG?
PS:请不要建议在ListBox里放ListBoxItem来逃避这个问题。
在后面的几篇里,将会继续为大家揭露一些WPF的BUG或是不便(基本上各个控件都有份哦。),更欢迎大家来补充自己发现的BUG,毕竟一个人的见识有限。希望能给大家一些提示。
下面是一部分计划。(实际顺序可能有不同。)
[WPF Bug清单]之(2)——RadioButton的IsChecked绑定失效
[WPF Bug清单]之(3)——暗中创建文件的打开文件对话框
[WPF Bug清单]之(4)——点击RadioButton的空白没有反应
[WPF Bug清单]之(5)——隐藏模态对话框后变成非模态
[WPF Bug清单]之(6)——Button的IsCancel属性失效
[WPF Bug清单]之(7)——顽固的Error Template
[WPF Bug清单]之(8)——RowDefinition中MaxHeight在一定条件下失效
[WPF Bug清单]之(9)——消失的光标
……
这个“WPF BUG清单”系列,将列出笔者在项目中遇到过的WPF的各种问题,也许不一定是BUG,但是会造成开发上的不便。更感觉WPF的第一次发布实在有赶鸭子上架的嫌疑。很多东西都还没有做就发布了。(跟Silverlight 1.0一样)
先举个最简单的BUG。WPF中ListBox选中项BUG。
1<Window x:Class="ListBoxSelectionBug.DemoWindow"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 xmlns:sys="clr-namespace:System;assembly=mscorlib"
5 xmlns:forms="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
6 Title="ListBox Selection Bug Demo" Height="300" Width="300">
7 <DockPanel Margin="12">
8 <Label Content="随便点点,他们可应该都是单选的哦。"
9 DockPanel.Dock="Top"/>
<GroupBox Header="WPF ListBox"
DockPanel.Dock="Top"
Padding="9" Margin="0,0,0,12">
<ListBox SelectionMode="Single">
<sys:String>A string value</sys:String>
<sys:String>A string value</sys:String>
<sys:String>A string value</sys:String>
</ListBox>
</GroupBox>
<GroupBox Header="Forms ListBox" Padding="9">
<WindowsFormsHost>
<forms:ListBox>
<forms:ListBox.Items>
<sys:String>A string</sys:String>
<sys:String>A string</sys:String>
<sys:String>A string</sys:String>
</forms:ListBox.Items>
</forms:ListBox>
</WindowsFormsHost>
</GroupBox>
</DockPanel>
</Window>
上面的源代码中同时列出了WPF的ListBox和WinForm的ListBox作为对比。注意在WPF的ListBox上可是特意标示出它是一个单选列表框了哦。但是结果却是这个样子。
图1. WPF ListBox Selection Bug
都是在ListBox里直接放几个String类型的值。结果WPF ListBox把几个值一样的string当成了同一个string,还变成了一个MultiSelection的ListBox。
从.NET 3.0等到了.NET 3.5 SP1,这个BUG依然怡然自得地躺在WPF里。不知道是不是微软不认为这是一个BUG?
PS:请不要建议在ListBox里放ListBoxItem来逃避这个问题。
在后面的几篇里,将会继续为大家揭露一些WPF的BUG或是不便(基本上各个控件都有份哦。),更欢迎大家来补充自己发现的BUG,毕竟一个人的见识有限。希望能给大家一些提示。
下面是一部分计划。(实际顺序可能有不同。)
[WPF Bug清单]之(2)——RadioButton的IsChecked绑定失效
[WPF Bug清单]之(3)——暗中创建文件的打开文件对话框
[WPF Bug清单]之(4)——点击RadioButton的空白没有反应
[WPF Bug清单]之(5)——隐藏模态对话框后变成非模态
[WPF Bug清单]之(6)——Button的IsCancel属性失效
[WPF Bug清单]之(7)——顽固的Error Template
[WPF Bug清单]之(8)——RowDefinition中MaxHeight在一定条件下失效
[WPF Bug清单]之(9)——消失的光标
……
相关文章推荐
- [WPF Bug清单]之(7)——顽固的Error Template
- [WPF Bug清单]之(8)——RowDefinition中MaxHeight在一定条件下失效
- [WPF Bug清单]之(9)——消失的光标
- [WPF Bug清单]之(3)——暗中创建文件的打开文件对话框
- [WPF Bug清单]之(11)——错位的RenderTransform动画
- [WPF Bug清单]之(6)——Button的IsCancel属性失效
- [WPF Bug清单]之(4)——点击RadioButton的空白没有反应
- WPF Bug清单之(13)——应该出现却没有出现的ListView水平滚动条
- [WPF Bug清单]之(5)——隐藏模态对话框后变成非模态
- 代码审查清单可以帮助消除更多的bug
- [WPF Bug清单]之(10)——CheckBox在不同主题下具有不同的行为
- WPF Bug清单之(13)——应该出现却没有出现的ListView水平滚动条
- WPFDataGrid可以编辑某列Bug,困惑已久
- [WPF Bug清单]之(12)——与自定义Attached Property相关的Binding Path运行时错误
- [WPF Bug清单]之(2)——RadioButton的IsChecked绑定失效
- 一款基于C#开发的WPF可以在放映PPT时记录放映时间,并显示当前页数
- 随便写了一个带多选的简单的新闻发布系统,大家有更好的写法可以在该下!嘿嘿,因为我是新手
- WPF中程序启动时的一个BUG
- wpf /e 可以下载了.
- Android 可以多选的分组联系人列表