2016-10-18 2 views
0

In der Anwendung, an der ich gerade arbeite, darf der Benutzer, der kein Administrator ist, die Daten nicht ändern dürfen. Aber er muss immer noch Lesezugriff auf die Daten haben.Deaktivieren Sie die Zeilen eines XamDataGrid basierend auf dem Wert eines Property im ViewModel

Wenn ich das Gitter selbst deaktiviert habe, kann ich nicht durch die Datensätze scrollen und ich kann nicht die integrierte Filterfunktion der Infragistics XamDataGrid verwenden. Was ich erreichen möchte, ist, nur die Zeilen des Datagrids zu deaktivieren, so dass es in einem Readonly-Zustand ist.

Im ViewModel habe ich eine boolesche Eigenschaft namens IsAdmin.

private bool _isAdmin; 
    public bool IsAdmin 
    { 
     get { return _isAdmin; } 
     set { SetProperty(ref _isAdmin, value); } 
    } 

In der Ansicht habe ich die Erklärung der XamDataGrid

<igDP:XamDataGrid x:Name="LookupItems" Grid.Row="2" Grid.ColumnSpan="3" Margin="2,4" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderBrush="Black" 
          BorderThickness="1" Theme="Office2010Blue" ActiveDataItem="{Binding SelectedLookupItem}" DataSource="{Binding SelectedLookupTableLookupItems}" > 

      <igDP:XamDataGrid.InputBindings> 
       <KeyBinding Key="Del" Command="{Binding DeleteItemCommand}" /> 
      </igDP:XamDataGrid.InputBindings> 

      <igDP:XamDataGrid.FieldLayoutSettings> 
       <igDP:FieldLayoutSettings AllowDelete="True" HighlightAlternateRecords="True" AllowAddNew="True" AutoArrangeCells="LeftToRight" 
              ResizingMode="Immediate" SelectionTypeRecord="Single" AutoGenerateFields="False" /> 
      </igDP:XamDataGrid.FieldLayoutSettings> 

      <igDP:XamDataGrid.FieldSettings> 
       <igDP:FieldSettings AllowRecordFiltering="True" AllowGroupBy="False" /> 
      </igDP:XamDataGrid.FieldSettings> 

      <igDP:XamDataGrid.FieldLayouts> 
       <igDP:FieldLayout> 
        <igDP:FieldLayout.Fields> 

         <igDP:Field Name="ConvertFrom" Label="From" AllowEdit="True" Width="*" 
            IsEnabled="{Binding Path=DataContext.IsAdmin, RelativeSource={RelativeSource AncestorType={x:Type igDP:XamDataGrid}}}" > 
          <igDP:Field.Settings> 
           <igDP:FieldSettings FilterOperandUIType="TextBox" FilterOperatorDefaultValue="Contains" /> 
          </igDP:Field.Settings> 
         </igDP:Field> 

         <igDP:Field Name="ConvertTo" Label="To" AllowEdit="True" Width="*" AllowRecordFiltering="False" 
            IsEnabled="{Binding Path=DataContext.IsAdmin, RelativeSource={RelativeSource AncestorType={x:Type igDP:XamDataGrid}}}"> 
         </igDP:Field> 

        </igDP:FieldLayout.Fields> 
       </igDP:FieldLayout> 
      </igDP:XamDataGrid.FieldLayouts> 
     </igDP:XamDataGrid> 

Das Problem, das ich ist haben, dass das Feld auf dem Datagrid nicht deaktiviert bekommt. Ich weiß, dass meine Eigenschaft funktioniert, weil ich andere Steuerelemente auf der Seite (Textfeld, ComboBox, Checkbox usw.) habe, die deaktiviert sind, wenn die IsAdmin-Eigenschaft auf false festgelegt ist.

Gibt es etwas falsch mit meiner Bindung im Datagrid? Ich kann nicht herausfinden, was das Problem ist.

Antwort

Verwandte Themen