C# 将属性绑定到代码隐藏中RadGridView中的列
我有一个自定义类列表,通过以下代码将它们绑定到C# 将属性绑定到代码隐藏中RadGridView中的列,c#,wpf,binding,radgridview,C#,Wpf,Binding,Radgridview,我有一个自定义类列表,通过以下代码将它们绑定到RadGridView: this.ItemsSource = CorrelationCalibraationGridInput.ListOfCalibratableCorrelationClasses; 然后我手动创建了这些列。对于作为复选框列的其中一列,我需要启用或禁用绑定到类的属性的复选框,并基于类的另一个属性设置其检查状态。 我使用了下面的代码,但启用功能未绑定到isnotcaliberedYet属性。您能解释为什么以及如何解决它吗?(请注
RadGridView
:
this.ItemsSource = CorrelationCalibraationGridInput.ListOfCalibratableCorrelationClasses;
然后我手动创建了这些列。对于作为复选框列的其中一列,我需要启用或禁用绑定到类的属性的复选框,并基于类的另一个属性设置其检查状态。
我使用了下面的代码,但启用功能未绑定到isnotcaliberedYet
属性。您能解释为什么以及如何解决它吗?(请注意,检查状态已正确绑定到类的IsCalibratedUSed
属性)
可以使用以下设置执行此操作:
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>
您应该将
GridViewDataColumn
的IsReadOnlyBinding
属性设置为您的绑定
:
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();
哪里是
尚未校准的定义?请不要忘记投票选出有用的答案:):
Binding enablityBinding = new Binding("IsNotCalibratedYet");
enablityBinding.Mode = BindingMode.OneWay;
enablityBinding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
enablityBinding.Converter = new InvertedBooleanConverter();