2

WPF と MVVM を使用してアプリケーションを開発しました。その中に、DataGrid を含む Window があります。ViewModel には、ウィンドウ用のいくつかのプロパティと、DataGrid 用の 1 つのプロパティ ( ObservableCollection<DataGridItemViewModel>) が含まれています。

ウィンドウ xaml で、次のようにデザイン DataContext を設定します。

<Window x:Class="XXX"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"

            mc:Ignorable="d"

            d:DataContext="{d:DesignInstance TheTypeOfTheWindowViewModelHere}">

次に、この方法でデザイン DataContext を DataGrid に設定します。

<DataGrid ItemsSource="{Binding Path=PropertyOfTheDataGrid}" d:DataContext="{d:DesignInstance DataGridItemViewModel}" >

しかし、DataGridItemViewModel 内に PropertyOfTheDataGrid が見つからないという警告が表示されます。

ItemsSource の DataContext のみを設定していると思いましたが、間違っているのか、それとも何らかの問題があるのか​​ わかりません。

前もって感謝します。

4

1 に答える 1

3

何を期待していたのかよくわかりませんか?命名基準から、DataGridItemViewModel各データグリッドアイテムにビューモデルコンテキストを適用することを期待していたことを示唆するものがありますか?

通常、1つのビューモデルをビュー全体に適用し、そのビューモデルにプロパティを設定します。たとえば、ObservableCollectionグリッドのアイテムのコレクションである。次に、そのコレクションプロパティにバインドするようにItemsSourceのを設定します。DataGrid

ItemsSource="{Binding MyItems}"

通常、グリッドのデータコンテキストを直接設定する必要はありません。ビューのデータコンテキスト(Windowこの場合はa)を使用します。

于 2012-09-14T10:24:40.890 に答える