7

C# で WPF ツールキット DataGrid の単一セルのコンテンツを取得するにはどうすればよいですか?

コンテンツとは、そこにある可能性のあるプレーンテキストを意味します。

4

3 に答える 3

6

フィリップが言ったことに従うと、DataGrid通常はデータにバインドされます。以下は、私の WPFが aと(両方の文字列) で構成されるa にDataGridバインドされている例です。ObservableCollection<PersonName>PersonNameFirstNameLastName

は列のDataGrid自動作成をサポートしているため、例は非常に単純です。インデックスで行にアクセスし、列名に対応するプロパティ名を使用してその行のセルの値を取得できることがわかります。

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            // Create a new collection of 4 names.
            NameList n = new NameList();

            // Bind the grid to the list of names.
            dataGrid1.ItemsSource = n;

            // Get the first person by its row index.
            PersonName firstPerson = (PersonName) dataGrid1.Items.GetItemAt(0);

            // Access the columns using property names.
            Debug.WriteLine(firstPerson.FirstName);

        }
    }

    public class NameList : ObservableCollection<PersonName>
    {
        public NameList() : base()
        {
            Add(new PersonName("Willa", "Cather"));
            Add(new PersonName("Isak", "Dinesen"));
            Add(new PersonName("Victor", "Hugo"));
            Add(new PersonName("Jules", "Verne"));
        }
    }

    public class PersonName
    {
        private string firstName;
        private string lastName;

        public PersonName(string first, string last)
        {
            this.firstName = first;
            this.lastName = last;
        }

        public string FirstName
        {
            get { return firstName; }
            set { firstName = value; }
        }

        public string LastName
        {
            get { return lastName; }
            set { lastName = value; }
        }
    }
}
于 2009-08-18T22:20:13.167 に答える
1

DataTable を使用してバインドする場合、Row の Item プロパティから DataRowView を取得できます。

DataRowView rowView = e.Row.Item as DataRowView;
于 2009-08-19T14:30:10.443 に答える
1

通常、DataGrid セルのコンテンツはデータ バインドされているため、特定の行に表示されているオブジェクトのプロパティの状態 (ほとんどの場合) を反映しています。したがって、ビューよりもモデルにアクセスする方が簡単な場合があります。

(ビューではなくモデルにアクセスする)と言ったので、私の質問は次のとおりです。何をしようとしていますか?ビジュアル ツリーを走査して、画面にレンダリングされるコントロール (またはコントロール) を見つける方法を探していますか? 行と列のインデックスによって、セルをどのように参照すると思いますか?

于 2009-08-18T19:49:29.430 に答える