2012-02-10 15 views
0

私はWinFormsプロジェクトをWPFに移植しようとしています。しかし、私はデータバインディングにいくつか問題があります。WinFormからWPFへの移植、データバインディングの問題

私のWinFormsのプログラムは、私が

class DevelopBindObj 
{ 
    public Developer Developer { get; private set; } 
    public string DeveloperName 
    { 
     get 
     { 
      return this.Developer.FIO; 
     } 
    } 
     private DevelopBindObj(Developer Developer) 
     { 
      this.Developer = Developer; 
     }   
    public static IBindingList GetBindingList(IEnumerable<Developer>Developers)  {BindingList<DevelopBindObj> result = new BindingList<DevelopBindObj>(); 
    foreach (var ee in Developers) 
    { 
     result.Add(new DevelopBindObj(ee)); 
    } 
    return result; 
} 

をデータバインディングのための追加のクラスを使用するコンボボックス

His **Data** properties: 
DataPropertyName **Developer** 
DataSource **developerBindingSource1** 
DataMember **DeveloperName** 
ValueMember **Developer** 

し、次のコード

developerBindingSource1.DataSource = DT.Developer; 
taskBindingSource.DataSource = DT.Task; 
typeTaskBindingSource.DataSource = DT.TypeTask; 

developBindObjBindingSource.DataSource = DevelopBindObj.GetBindingList(DT.Developer); 
typeTaskBindObjBindingSource.DataSource = TypeTaskBindObj.GetBindingList(DT.TypeTask); 

バインディングフォームデータの列を使用してデータグリッドを持っており、 WPFでどうすればいいですか?

私が試してみた:

<DataGridComboBoxColumn x:Name="iDTypeTaskColumn" 
         Header="IDType Task" 
         Width="SizeToHeader" 
         SelectedValuePath="{Binding Source={StaticResource bindObjectsTaskViewSource}, Path=TypeTask}" 
         DisplayMemberPath="{Binding Source={StaticResource bindObjectsTaskViewSource}, Path=TypeTaskName}" 
         ItemsSource="{Binding Source={StaticResource bindObjectsTaskViewSource}}" SelectedItemBinding="{Binding Path=tblDevTypeTask}"> 
をしかし、これは動作しません。

答えて

1

SelectedValuePathDisplayMemberPathComboBox内の項目のプロパティ名ではなく、バインディングbindObjectsTaskViewSourceは、オブジェクトの集合であり、そのコレクション内の各オブジェクトがTypeTaskTypeTaskName

というプロパティがあり

<DataGridComboBoxColumn x:Name="iDTypeTaskColumn" 
         Header="IDType Task" 
         Width="SizeToHeader" 
         SelectedValuePath="TypeTask" 
         DisplayMemberPath="TypeTaskName" 
         ItemsSource="{Binding Source={StaticResource bindObjectsTaskViewSource}}" 
         SelectedItemBinding="{Binding Path=tblDevTypeTask}"> 

する必要があります

0

それはこのようにアクセスできるようにするために、あなたのbindObjectsTaskViewSourceは、リソースのどこに宣言されている... {StaticResource bindObjectsTaskViewSource}

あなたが最初DataContextとしてStaticResourceとしてSourceSourceの違いを理解するためにWPFの基礎を学ぶべきではない場合。

関連する問題