2013-10-06 23 views
1

我想在ListView中獲得SelectedItems值,但它不起作用!有關從選定項目獲取值的麻煩

我沒有問題,當選擇一個項目,但我想在擴展模式下工作,以便它顯示任何選定的項目。

我的代碼是:

List<Fnamelist> familylist = new List<Fnamelist>(); 
    public class Fnamelist 
    { 

     public Fnamelist(string fname) 
     { 
      this.Fname = fname; 

     } 
     private string fname = string.Empty; 
     public string Fname 
     { 
      get { return fname; } 
      set { fname = value; } 
     } 

    } 


    private void button1_Click(object sender, RoutedEventArgs e) 
    { 

     MessageBox.Show(((Fnamelist)listView1.SelectedItems).Fname.ToString()); 
    } 

    private void Window_Loaded(object sender, RoutedEventArgs e) 
    { 
     familylist.Add(new Fnamelist("mike")); 
     familylist.Add(new Fnamelist("john")); 
     familylist.Add(new Fnamelist("melon")); 
     familylist.Add(new Fnamelist("bab")); 
     listView1.ItemsSource = familylist; 
     listView1.Items.Refresh(); 
    } 

XAML:

<Button Content="show" Height="23" HorizontalAlignment="Left" Margin="331,79,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" /> 
    <ListView Height="129" HorizontalAlignment="Left" Margin="20,23,0,0" Name="listView1" VerticalAlignment="Top" Width="291"> 
     <ListView.View> 
      <GridView> 
       <GridViewColumn Header="FirstName" DisplayMemberBinding="{Binding Path=Fname}"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 

當我點擊Show按鈕,它提供了錯誤:

Unable to cast object of type 'System.Windows.Controls.SelectedItemCollection' to type 'Fnamelist'.

什麼問題呢?

回答

5

button1_Click事件處理程序中的代碼嘗試顯示單個項目的Fname,其中listView1.SelectedItems是項目的集合。

您可以顯示所選的第一個項目:

MessageBox.Show(((Fnamelist)listView1.SelectedItems[0]).Fname); 

或重複選定的項目收集和做你想做的內部,例如,MessageBox

foreach (var item in listview1.SelectedItems) 
{ 
     string fname = ((Fnamelist)item).Fname; 
     MessageBox.Show(fname); 
} 

在一個側面說明,您可以刪除ToString()呼叫。它是重新編號,因爲Fname已經是一個字符串。

+0

非常感謝:)爲你+1 –