【问题标题】:binding a property to the colomn in RadGridView in code behind在后面的代码中将属性绑定到 GridView 中的列
【发布时间】:2017-02-14 12:11:27
【问题描述】:

我有一个自定义类列表,我通过以下代码将它们绑定到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);

【问题讨论】:

  • IsNotCalibratedYet 定义在哪里?

标签: c# wpf binding radgridview


【解决方案1】:

您应该将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();

【讨论】:

【解决方案2】:

您可以使用以下设置来做到这一点:

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>

【讨论】:

    猜你喜欢
    • 2011-02-25
    • 1970-01-01
    • 2013-09-17
    • 2011-08-26
    • 1970-01-01
    • 2016-08-25
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多