[WPF]如何正确地用代码设置ListBox的当前选中项2012-01-02 博客园 南柯之石有人可能会说这有什么好写的。不就是一行代码就能搞定的吗?而且为什么需要用代码设置SelectedItem呢?用户所点的Item不就自动是SelectedItem吗?在这里将要讨论我们的,就是ListBox自己没有能自己把SelectedItem设置正确的情况。本来想当作一个WPF Bug清单的一篇文章的,但是又感觉也许就是有这样变态的需求呢。我们用一个非常简单的代码的XAML就可以重现这个问题。Demo Window
1<Window x:Class="SelectListBoxItem.DemoWindow"2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"4 xmlns:s="clr-namespace:System;assembly=mscorlib" 5 Title="ListBox Selection Problem"6 SizeToContent="Height"7 Width="300">8 <ListBox>9 <ListBox.ItemTemplate>10 <DataTemplate>11 <TextBox Text="{Binding .}" Width="100"/>12 </DataTemplate>13 </ListBox.ItemTemplate>14 <s:String>a</s:String>15 <s:String>b</s:String>16 <s:String>c</s:String>17 </ListBox>18</Window>
运行的效果如下。

图1. TextBox得到焦点