hinter

2017-02-14 8 views
0

eine Eigenschaft zum colomn in RadGridView in Code-Bindung habe ich eine Liste von benutzerdefinierten Klassen, die ich ihnen in die RadGridView durch den folgenden Code gebunden haben:hinter

this.ItemsSource = CorrelationCalibraationGridInput.ListOfCalibratableCorrelationClasses; 

dann habe ich geschaffen, um die Spalten manuell. Für eine der Spalten, die eine Kontrollkästchenspalte ist, muss ich die Kontrollkästchenbindung für eine Eigenschaft der Klasse deaktivieren und ihren Prüfstatus basierend auf einer anderen Eigenschaft der Klasse festlegen. Ich habe den folgenden Code verwendet, aber die Eigenschaft ist nicht an die IsNotCalibratedYet Eigenschaft gebunden. Können Sie erklären, warum und wie kann ich es lösen? (Beachten Sie, dass der Check-Status korrekt an die IsCalibratedUSed Eigenschaft der Klasse gebunden ist).

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

Wo ist 'IsNotCalibratedYet' definiert:

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); 

Je nachdem, ob Ihre Quelle Eigenschaft gibt true/false Sie ein InvertedBooleanConverter verwenden möchten? – wkl

Antwort

0

Sie die IsReadOnlyBinding Eigenschaft sollte die GridViewDataColumn auf Ihre Binding:

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

Bitte vergessen Sie nicht, hilfreiche Antworten zu voten :): http://stackoverflow.com/help/privileges/vote-up – mm8

0

Sie können dies die folgende Einstellung verwenden tun:

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"), 
    }); 
} 

in denen:

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

und XAML ist

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

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