2017-01-09 17 views
0

私はユーザー入力のためのデータグリッドを持っており、各セルはデータ選択用のコンボボックスです。選択した値は、後でデータをデータベースに保存するために、データグリッドのitemsourceにバインドされます。コンボボックスの値は、異なるitemsourceから来るものとします。MVVM Databinding DatagridとCombobox/itemsource

UI:

    <DataGrid ItemsSource="{Binding Users}"> 
         <DataGrid.Columns> 
          <DataGridTemplateColumn Header="Firstname"> 
           <DataGridTemplateColumn.CellTemplate> 
            <HierarchicalDataTemplate> 
             <ComboBox ItemsSource="{Binding Firstnames}" DisplayMemberPath="Name"/> 
            </HierarchicalDataTemplate> 
           </DataGridTemplateColumn.CellTemplate> 
          </DataGridTemplateColumn> 
         </DataGrid.Columns> 
        </DataGrid> 
        <ComboBox ItemsSource="{Binding Firstnames}" DisplayMemberPath="Name"> 

        </ComboBox> 
       </StackPanel> 

モデルとのViewModel:

// Models 

public class User 
{ 
    public string Firstname { get; set; } 
    public string Lastname {get; set; } 
} 

public class Firstname 
{ 
    public string Name { get; set; } 
} 

public class Lastname 
{ 
    public string Name { get; set; } 
} 


//ViewModel 

public class GenerateViewModel : NotifyUIBase 
{ 

    #region properties 
    public ObservableCollection<User> Users { get; set; } 

    public ObservableCollection<Firstname> Firstnames { get; set; } 
    public ObservableCollection<Lastname> Lastnames { get; set; } 

    #endregion 


    #region Constructor 

    public GenerateViewModel() 

    { 
     Firstnames = new ObservableCollection<Firstname>() 
     { 
      new Firstname() {Name="Firstname1"}, 
      new Firstname() {Name= "Firstname2"} 
     }; 
     Lastnames = new ObservableCollection<Lastname>() 
     { 
      new Lastname() {Name="Lastname1"}, 
      new Lastname() {Name= "Lastname2"} 
     }; 
     Users = new ObservableCollection<User> {new User()}; 

    } 

    #endregion 

    #region Methods 


    #endregion 


} 

データグリッドの内部コンボボックスが空に保ち、私のデータグリッドの追加のコンボボックスの外部との結合がうまく動作します。 DataContextが認識されない

答えて

1

、あなたがメインウィンドウからそれを取得する必要があります:

<HierarchicalDataTemplate> 
     <ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, 
             AncestorType={x:Type Window}}, 
             Path=DataContext.Firstnames}" 
        DisplayMemberPath="Name"/> 
</HierarchicalDataTemplate> 
+0

感謝した作品ですが、私の解決策のための私の考えが間違っているようです。私はこれを確認するための新しい投稿を作成する必要があります私は正しい方法です。 – Shazter

+0

おそらく、この質問をする正しい場所です。選択した値をコレクションusers.Firstnameにバインドする方法は?選択した値を格納するために2番目のコレクションを作成する必要がありますか? – Shazter

関連する問題