2017-02-14 7 views
0

У меня есть список пользовательских классов, которые я связала их к RadGridView через код ниже:связывание свойства в колонном в 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); 
+0

Где 'IsNotCalibratedYet' определен? – wkl

ответ

0

Вы должны установить IsReadOnlyBinding свойство GridViewDataColumn вашего 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); 

В зависимости от того, возвращает истину, ваше имущество источника/ложь вы можете использовать InvertedBooleanConverter:

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

Пожалуйста, не забудьте проголосовать за полезные ответы :): http://stackoverflow.com/help/privileges/vote-up – mm8

0

Вы можете сделать это, используя следующие настройки:

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>