свойство listbox selectedvalue не дает мне строковое значение выделения - PullRequest
0 голосов
/ 13 марта 2012

У меня есть список с изображением, использующим этот же метод. здесь .

Это список с шаблоном элементов, который имеет изображение и текстовый блок.Как мне вернуть выбранное значение списка?

Примерно так:

string x = listbox.SelectedValue.ToString();

Это не дает мне значение текстового блока.Есть идеи?

ОТВЕТ:

Вот ответ:

 listboxBinding_Master.Detail.SampleData selectedValue = (listboxBinding_Master.Detail.SampleData)listBox1.SelectedItem;
 string x = selectedValue.ListBoxText;

Sampledata - это класс, который я использовал для определения строк, ListBoxText - это имя TextBlock.

1 Ответ

3 голосов
/ 14 марта 2012

Установите ListBox.SelectedValuePath на Имя члена в классе Binded, представляющее нужное вам значение. Таким образом, вы сможете получить значение через ListBox.SelectedValue

Редактировать (пример):

<ListBox x:Name="TestListBox" ItemsSource="{Binding}" SelectedValuePath="LastName" MouseDoubleClick="TestListBox_MouseDoubleClick">
  <ListBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Path=FirstName}" Width="110" />
        <TextBlock Text="{Binding Path=Age}"/>
      </StackPanel>
    </DataTemplate>
  </ListBox.ItemTemplate>
</ListBox>

CodeBehind:

public partial class MainWindow: Window
  {
    public MainWindow( )
    {
      InitializeComponent( );
      var persons = new System.Collections.ObjectModel.ObservableCollection<Person>();
      persons.Add( new Person( ) { FirstName = "Walter" , LastName = "Bishop" , Age = 63 } );
      persons.Add( new Person( ) { FirstName = "Peter" , LastName = "Bishop" , Age = 33 } );
      persons.Add( new Person( ) { FirstName = "Olivia" , LastName = "Dunham" , Age = 33 } );
      TestListBox.DataContext = persons;
    }
    private void TestListBox_MouseDoubleClick( object sender , MouseButtonEventArgs e )
    {
      if ( TestListBox.SelectedItem != null )
      {
        MessageBox.Show( (string)TestListBox.SelectedValue );
      }
    }
  }

  public class Person
  {
    public string FirstName { get; set; }
    public string LastName{get;set;}
    public int Age { get; set; }
  }
...