2013-11-09 2 views

ответ

1

Если вы определяете ItemTemplate для вашего ListBox, вы можете использовать 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

Это то, что я сделал. Но когда я выбираю элемент с помощью мыши, я выбираю целую строку элемента в ListBox и ни одного слова. – simmeone

+0

Я попробую! Спасибо :) – simmeone

Смежные вопросы