2013-11-09 65 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