2013-11-09 44 views

回答

1

如果你定义为你的ListBoxItemTemplate,你可以使用一个TextBox来显示每个项目(假设你的项目是纯string S):

<ListBox ItemsSource="{Binding YourCollection}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding}" IsReadOnly="True" /> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

更新>>>

我刚刚测试过它,只好做一次更改以设置Binding.Mode财产到OneWay它工作得很好。然而,我注意到,TextBox将停止从被选择的每个项目,所以增加了Style照顾那和风格的项目有点太:

<ListBox ItemsSource="{Binding YourCollection}" Name="ListBox" HorizontalContentAlignment="Stretch"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <TextBox Text="{Binding ., Mode=OneWay}" IsReadOnly="True"> 
       <TextBox.Style> 
        <Style> 
         <Setter Property="TextBox.BorderThickness" Value="0" /> 
        </Style> 
       </TextBox.Style> 
      </TextBox> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
    <ListBox.ItemContainerStyle> 
     <Style> 
      <Style.Triggers> 
       <Trigger Property="ListBox.IsKeyboardFocusWithin" Value="True"> 
        <Setter Property="ListBoxItem.IsSelected" Value="True" /> 
       </Trigger> 
      </Style.Triggers> 
     </Style> 
    </ListBox.ItemContainerStyle> 
</ListBox> 
+0

这就是我所做的。但是,当我用鼠标选择一个项目时,我选择列表框中的整个项目行而不是一个单词。 – simmeone

+0

我会试一试!谢谢 :) – simmeone