I'm using the XamDataGrid to display notes for some projects in my application. For some users it shouldn't be possible to edit these notes. I therefore used FieldSettings to bind the IsReadOnly-property to a property in my ViewModel. The problem however, is, that the IsReadOnly-property only works on the XamComboEditor, and not the XamTextEditor.
XamComboEditor-field:
<igDP:Field Name="NoteType" Label="Type">
<igDP:Field.Settings>
<igDP:FieldSettings EditorType="{x:Type igEditors:XamComboEditor}">
<igDP:FieldSettings.EditorStyle>
<Style TargetType="{x:Type igEditors:XamComboEditor}">
<Setter Property="DataContext" Value="{Binding ElementName=layoutRoot, Path=DataContext}"/>
<Setter Property="ItemsSource" Value="{Binding NoteTypes}" />
<Setter Property="DisplayMemberPath" Value="Name" />
<Setter Property="ValuePath" Value="NoteTypeId" />
<Setter Property="IsReadOnly" Value="{Binding M.AccessReadOnly}" />
</Style>
</igDP:FieldSettings.EditorStyle>
</igDP:FieldSettings>
</igDP:Field.Settings>
</igDP:Field>
XamTextEditor-field:
<igDP:Field Name="NoteText" Label="" Width="*">
<igDP:FieldSettings EditorType="{x:Type igEditors:XamTextEditor}">
<Style TargetType="{x:Type igEditors:XamTextEditor}">
The IsReadOnly-property works just fine if I set it to false in the XAML. But when I use databinding it doesn't...
Hello Christian,
Thank you for your post. I have been looking through it and the code you have provided and I suggest you change the Binding in the XamTextEditor to the following one:
<Setter Property="IsReadOnly" Value="{Binding DataItem.M.AccessReadonly}" />
Because the DataContext there is DataRecord. Please let me know if this helps you or you need further clarifications on this matter.
Looking forward for your reply.
Hello Stefan
Thanks for your reply!
I tried the code you provided, but it still doesn't work.
The M.AccessReadOnly-property is only present in the DataContext for the Window and not in the actual DataItem (Note-object). I tried using layoutRoot instead.
This didn't work either!
I know that the property is set to false, because it works on the ComboBox!