2016-08-22 23 views
0

DataGridを含むUserControlを設計しています。データグリッドは、ItemsSourceにバインドするのに最善の努力をしても、行を表示していません。WPFユーザーコントロール内でDataGridのItemsSourceをバインドできません。

  1. ユーザーコントロールを含むウィンドウ:ここ

    は、結合の基本的な流れです。

  2. ウィンドウviewmodelには、ユーザーコントロール用に設計されたviewmodelのインスタンスが含まれています。
  3. 私はUserControlのViewModelを依存関係プロパティを介してこのビューモデルにバインドします。
  4. DataGridはビューモデル内の観測可能なコレクションにバインドされますが、何も表示されません。

コード(XAMLとVB.Net):

すべてのウィンドウコントロールにバインドさウィンドウ表示モデル:

Public Class WindowVM 
    ... 
    Public Property UserControlViewModel as New UserControlVM 
End Class 

ウィンドウXAML:

<local:MyUserControl ViewModel="{Binding UserControlViewModel, Mode=OneWay}"/> 

ユーザーコントロールコード:

Public Shared ReadOnly ViewModelProperty As DependencyProperty = DependencyProperty.Register("ViewModel", GetType(UserControlVM), GetType(MyUserControl), New PropertyMetadata(Nothing)) 
... 
Public Property ViewModel As UserControlVM 
    Get 
     Return CType(Me.GetValue(ViewModelProperty), UserControlVM) 
    End Get 
    Set(value As UserControlVM) 
     Me.SetValue(ViewModelProperty, value) 
    End Set 
End Property 
.... 
Public Class UserControlVM 
    Public Property RunItems As New ObservableCollection(Of RunVM) 
End Class 

ユーザーコントロールのXAML、DataGridのバインディング:

<DataGrid DataContext="{Binding ViewModel}" 
    ItemsSource="{Binding RunItems}" ... 

これは、ステップの多くをようだが、私の知る限り、これはDataGridに結合するヘビへの正しいMVVM方法です。これまでは何もなかった。

+0

ですか? – ViVi

+0

はいvb.netは質問 – Tekito

+0

を編集します。あなた自身で解決してもよかったです。 – ViVi

答えて

0

私はそれを解決したように見えます。 DataGridDataContextは、UserControlを指す必要がありました。

単純な見落とし:それはVB.NETコード

<DataGrid DataContext="{Binding ViewModel, RelativeSource={RelativeSource AncestorType=UserControl}}" 
ItemsSource="{Binding RunItems}" 
関連する問題