2010-09-29 138 views
0
<Custom:DataGrid Grid.Row="1" Background="{x:Null}" x:Name="datagrid" 
           DataContext="{StaticResource dataSetPartner}" 
           ItemsSource="{Binding Partner}".... 

如何在代碼中進行綁定?

<ObjectDataProvider x:Key="dataSetPartner" MethodName="PartnerStat" ObjectType="{x:Type loc:DataSetCreator}" /> 

這是偉大的工作,但我需要編寫代碼...

我的代碼是不工作:

adatagrid.DataContext = null; 
datagrid.DataContext = this.Resources["dataSetPartner"]; 

Binding b = new Binding("DataContext"); 
b.Source = datagrid; 
b.Path = new PropertyPath("Partner"); 
b.Mode = BindingMode.OneWay; 
datagrid.SetBinding(DataGrid.ItemsSourceProperty, b); 

爲什麼呢?

+0

你說的 「不工作」 是什麼意思?你有例外嗎?您的Visual Studio輸出窗口是否顯示任何綁定錯誤?順便說一句,你可以使用'Binding()'而不是'Binding(「DataContext」)'。該參數設置路徑,無論如何您都覆蓋。 – Heinzi 2010-09-29 16:16:21

回答

2

ObjectDataProvider在XAML中用於指示數據源。您指定要調用的類型和方法。但是,您不需要在代碼中使用ObjectDataProvider,因爲您可以直接調用該方法。


var dsc = new DataSetCreator(); 
    this.DataContext = dsc.PartnerStat(); 
    // bind a textblock 
    Binding b = new Binding("FirstName"); 
    textBlock1.SetBinding(TextBlock.TextProperty, b); 
    // bind the datagrid 
    // don't specify a path, it will bind to the entire collection 

    var b1 = new Binding(); 
    dataGrid1.SetBinding(DataGrid.ItemsSourceProperty, b1); 
+0

太棒了!但在我的情況下正確的代碼:datagrid.DataContext = DataSetCreator.PartnerStat(); var b1 =新的綁定(「合作伙伴」); datagrid.SetBinding(DataGrid.ItemsSourceProperty,b1); – Mediator 2010-09-29 18:14:47

+0

很高興爲你工作。我不知道你的對象模型,所以我不得不猜測正確的名字。 – 2010-09-29 21:32:18

+0

我給了corect的名字 – Mediator 2010-09-30 04:03:17