簡體   English   中英

Silverlight Datagrid運行時添加和綁定

[英]Silverlight datagrid runtime adding and binding

我需要在運行時將列添加到silverlight列,還需要對這些列執行綁定。

這就是我在XAML中靜態地做的方法

<sdk:DataGridTextColumn  CanUserReorder="True" CanUserResize="True" CanUserSort="True"  Header="CriteriaName" Width="2*" Binding="{Binding Path=[CriteriaName]}" IsReadOnly="True"  />

現在我想在后面的代碼中做同樣的事情

這是我所做的

 foreach(string Col in lColumnNames)
            {
                DataGridTextColumn DGCol=new DataGridTextColumn();
                DGCol.Header= Col;


                Binding lObjBinding = new Binding(Col);
                lObjBinding.Mode = BindingMode.OneWay;

                DGCol.Binding = lObjBinding;
                GrdQuickFindResult.Columns.Add(DGCol);


            }

這是行不通的。我只能看到DataGrid中的空白行,就好像綁定沒有發生一樣。 請檢查並告訴我是否使用xaml完成的所有操作是否也使用C#完成,或者是否有一些屬性需要在我創建的綁定對象中設置。 謝謝

像這樣的綁定:

"{Binding Path=MyProperty}" 

只是一種冗長的書寫方式:

"{Binding MyProperty}"

用同樣的方式

Binding b = new Binding();

是相同的

Binding b = new Binding("MyProperty");

並且意味着您將TextBoxColumn的文本綁定到數據對象中屬性“ MyProperty”的值,該屬性將被設置為DataGrid中一行的DataContext。 為此,我們假設您的數據對象類似於:

public class DataObject{
    public object MyProperty {get; set;}
}

如果您的數據對象是這樣的,則您后面的代碼綁定很好,它們應該可以工作。

當您指定類似的綁定時:

"{Binding Path=[MyProperty]}" 

要么

"{Binding [MyProperty]}"

您正在綁定數據對象的索引器 (如果它實現了一個索引 ),並訪問與索引“ MyProperty”相對應的值。 如果這樣做,我假設您的數據對象是IDictionary或實現索引器的類,例如:

public class DataObject{
    public object this[object index]
    {
        get{ /*return something*/ }
        set { /*set something*/ }
    }
}

只是一個建議:對您的局部變量使用駝峰式大小寫 ,對於其他查看您的代碼的人來說似乎很奇怪,似乎它們是實例屬性或靜態字段。

 foreach(string Col in lColumnNames)
            {
                DataGridTextColumn DGCol=new DataGridTextColumn();
                DGCol.Header= Col;

                Binding lObjBinding = new Binding();
                lObjBinding.Mode = BindingMode.OneWay;

                //=====This is what was missing======================//
                lObjBinding.Path = new PropertyPath("["+Col+"]");
                //==================================================//

                DGCol.Binding = lObjBinding;
                GrdQuickFindResult.Columns.Add(DGCol);


            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM