2011-01-06 11 views
0

XMLにバインドされたListViewがあります。 XAMLは次のようになります。c#リストビューのwpfアクセス値

<ListView Name="patientsListView" ItemsSource="{Binding}" SelectionChanged="patientsListView_SelectionChanged"> 
    <ListView.View> 
     <GridView x:Name="patientGrid"> 
      <GridViewColumn Header="PatientName" Width="Auto" DisplayMemberBinding="{Binding XPath=PatientName}" /> 
      <GridViewColumn Header="PatientAccountNumber" Width="Auto" DisplayMemberBinding="{Binding XPath=PatientAccountNumber}" /> 
      <GridViewColumn Header="DateOfBirth" Width="Auto" DisplayMemberBinding="{Binding XPath=DateOfBirth}" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

行をクリックすると、私は何かをしたい:

private void patientsListView_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
     //do stuff 
     MessageBox.Show(); 
     } 

私は、行をクリックすると、どのように私は、個々の列の値にアクセスできますか?デバッグすると、リストビューのSelectedItemsのLocalsで、結果ビューのInnerTextにデータが含まれていることがわかりますが、コード内の値を取得する方法はわかりません。そこから、あなたがpatient.PatientNameを得ることができます

答えて

1
var patient = ((ListViewItem) sender).Content as Patient; //or whatever object type 

など

[EDIT]今、私はそれを見ていることを、私はこれはselectionchangedイベント内で動作する100%わかりません。しかし、それは行のクリックイベントで動作します。それはに変換するよりも、デバッグモードで

<TextBlock Text="{Binding SelectedItem.PatientName,ElementName='patientGrid'}"/> 
+0

おかげのようにしたい値を得ることができるよりも、そのタイプ

var item = (ItemType)listview.SelectedItems 

!正確には私が探していた答えではありませんが、あなたの最終的なコメントは私のUIの更新を思いつきました...そして、私はListViewにIsSynchronizedWithCurrentItem = "True"を追加しなければなりませんでした。 – CraigV

+0

@CraigV私は少し助けることができてうれしいです:) – NickAldwin

1

listview.SelectedItemsの種類を見つける、:

あなただけのUIの別の部分を更新しようとしている場合は、あなたがこのような何かを行うことができますあなたはこの

item.PatientName 
関連する問題