簡體   English   中英

在后面的代碼中將屬性綁定到RadGridView中的列

[英]binding a property to the colomn in RadGridView in code behind

我有一個自定義類的列表,這些類已通過以下代碼將它們綁定到RadGridView

this.ItemsSource = CorrelationCalibraationGridInput.ListOfCalibratableCorrelationClasses;

然后我手動創建了列。 對於復選框列之一,我需要啟用禁用復選框綁定到類的屬性,並基於該類的另一個屬性設置其檢查狀態。 我使用了下面的代碼,但易用性未綁定到IsNotCalibratedYet屬性。 您能否解釋為什么以及如何解決它?(請注意,檢查狀態已正確綁定到IsCalibratedUSed屬性)。

GridViewDataColumn IsCalibratedUSedColumn = new GridViewDataColumn()
{
    UniqueName = "IsCalibratedUSedColumn",
    Header = "Use calibrated",
    DataMemberBinding = new Binding("IsCalibratedUSed"),
    IsFilterable = false,
};
Binding enablityBinding = new Binding("IsNotCalibratedYet");
        enablityBinding.Mode= BindingMode.OneWay;
        enablityBinding.UpdateSourceTrigger= UpdateSourceTrigger.PropertyChanged;
        BindingOperations.SetBinding(IsCalibratedUSedColumn, GridViewDataColumn.IsEnabledProperty,enablityBinding );
        this.Columns.Add(IsCalibratedUSedColumn);

您可以使用以下設置進行此操作:

public MainWindow()
{ 
    InitializeComponent();
    lv.ItemsSource = new Item[3] { new Item() { IsNotCalibratedYet=true }, new Item() { IsNotCalibratedYet = false }, new Item() { IsNotCalibratedYet = true } };
    gv.Columns.Add(new GridViewColumn()
    {
         DisplayMemberBinding = new Binding("IsNotCalibratedYet"),
    });
} 

其中:

public class Item
{
    public bool IsNotCalibratedYet { get; set; }
}

Xaml是

    <ListView Name="lv" > 
        <ListView.View> 
            <GridView x:Name="gv" AllowsColumnReorder="true"
                ColumnHeaderToolTip="Employee Information">  

            </GridView> 
        </ListView.View>
    </ListView>

您應該將GridViewDataColumnIsReadOnlyBinding屬性設置為Binding

GridViewDataColumn IsCalibratedUSedColumn = new GridViewDataColumn()
{
    UniqueName = "IsCalibratedUSedColumn",
    Header = "Use calibrated",
    DataMemberBinding = new Binding("IsCalibratedUSed"),
    IsFilterable = false,
};
Binding enablityBinding = new Binding("IsNotCalibratedYet");
enablityBinding.Mode = BindingMode.OneWay;
enablityBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;

IsCalibratedUSedColumn.IsReadOnlyBinding = enablityBinding;

this.Columns.Add(IsCalibratedUSedColumn);

根據您的源屬性是否返回true / false,您可能需要使用InvertedBooleanConverter

Binding enablityBinding = new Binding("IsNotCalibratedYet");
enablityBinding.Mode = BindingMode.OneWay;
enablityBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
enablityBinding.Converter = new InvertedBooleanConverter();

暫無
暫無

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

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