WPFでは、どのようにListViewの項目にアクセスしますか?WPFでListViewの項目を取得するにはどうすればよいですか?
私はSelectedValuePath="..."
を知っていますが、私のリストビューでは7列を表示しています。 例えば、部屋番号を含むGridViewColumn
があります。すべての部屋番号の行をリストに入れて、すべての列にしたいと思います。
WPFでは、どのようにListViewの項目にアクセスしますか?WPFでListViewの項目を取得するにはどうすればよいですか?
私はSelectedValuePath="..."
を知っていますが、私のリストビューでは7列を表示しています。 例えば、部屋番号を含むGridViewColumn
があります。すべての部屋番号の行をリストに入れて、すべての列にしたいと思います。
WPFはWinFormsとは異なるデータソースを処理します。最初は、WinFormsで慣れていたようにソースコレクションにアクセスできないため、WPFではより複雑に見えます。ただし、WPFを使用すると、開発がより自然になることがわかります。
WPFでは、に、のUIコントロール(たとえば、ListView)をデータソースにバインドします。データソースは、必要なカスタムタイプのコードビハインド内のコレクションに過ぎません。コレクションへの適切なアクセスを許可する限り、コードビハインドはListViewとの対話なしにソースデータにアクセスできます。
リストビューの場合、データソースは、ビューが結ばれているDataContextのObservableCollectionになります。タイプTはカスタムクラスタイプです。 XAMLコードを使用すると、各クラスのカスタムクラスタイプのプロパティが各データアイテムに対してどのように表示されるかを示すListViewにデータテンプレートを定義できます。
詳細については、MVVMのUIパターンを調べ、INotifyPropertyChangedインターフェイスを調べてください。例えば
:
コードビュー
internal class MyViewModel
{
public ObservableCollection<Person> People = new ObservableCollection<People>();
// code to populate People
}
public class MyWindow
{
public MyWindow()
{
DataContext = new MyViewModel();
}
}
の後ろ
<ListView ItemsSource={Binding Path=People, Mode=OneWay}>
<ListView.DataTemplate>
<Label Content={Binding Path=FirstName, Mode=OneWay} />
<!-- Blah blah blah -->
</ListView.DataTemplate>
</ListView>
This MSDNの記事は(一番下のコードスニペットと例を参照してください)、詳細に入る 。
リストビューのセルは、オブジェクトのリストによって生成されます。オブジェクトのリストは、すべての列に対して複数のバインディングがあります。
あなたが求めているのは、WPFの方法ではなく、古いスタイルのアプローチ(winformsなど)です。 WPFはまったく異なり、セルへのアクセスは面倒です(私も信頼性がありません)。
選択されたオブジェクトを知っているだけで、さまざまな列がバインドされているプロパティにアクセスするだけです。
質問をより明確に言い換えてください。現在の形では意味をなさない。 – Jon
クリーンな方法で質問し、コードサンプルを提供してください。 – maniacneron
投稿を参照してください –