Hi,
I would like to generally define my styles in the XAML, but add dynamic datatriggers on top in code-behind.
What I have in the xaml is like
<igDP:XamDataGrid.Resources>
<Style TargetType="{x:Type igDP:CellValuePresenter}">
<Setter Property="Background" Value="CadetBlue" />
</Style>
</igDP:XamDataGrid.Resources>
Somewhere in the code behind, I'd want to add, for example:
var dt = new DataTrigger
{
Binding = new Binding(bindingPath),
Value = true
};
dt.Setters.Add(new Setter(Control.BorderThicknessProperty, new Thickness(1)));
dt.Setters.Add(new Setter(Control.BorderBrushProperty, Brushes.Green));
Hello,
Thank you for your post. I have been looking through it and I created a sample project for you with the functionality you want. Basically I created a new Style, based on the one defined in XAML, and added a new Setter to it and then applied it to the XamDataGrid’s FieldSettings’ CellValuePresenterStyle Property. You can also add DataTriggers the same way. Please let me know if you need further clarification on this matter.
Looking forward for your reply.
Hi Stefan,
Thank you, this worked.
One further issue is I would like to bind the setter to an object that is a member property of my Record.DataItem
Currently I instantiate the member in a Grid_RecordAdded handler, eg:
((MyItem)e.Record.DataItem).MetaData = new ItemMetaData(e.Record.DataItem);
Unfortunately, it seems to only pick up the trigger binding item when I move on to another record. Is there a way to force rebinding in the Grid_RecordAdded handler?
Hello again,
I have been looking through your sample and I edited, so now it works as you want. Basically I added a handler for the XamCheckEditor and make it EndEditMode and StartEditMode whenever its value changes. This way the triggers are applied.
Hope this helps you
This works fine if the field is a a boolean, but what if the field driven the style is a text editor or combo box? is there a generic way of handling it?
I can say that if you have XamComboEditor or XamTextEditor you just need to make the same Handlers as the one for the XamCheckEditor. If I have misunderstood your question in some way feel free to write me.
If I add the check handler to a text editor, every character i type will kick off endeditmode and starteditmode!
Is there a different approach to solving this?
In that case do not add a handler and the brush will be added, when the Editor exits edit mode. If I came up with a different approach I will update you.
Hope this helps you.
It seems like I misunderstood you in some way. Now I attached the sample again and I believe it works as you want. The border changes its color, when the value of the XamCheckEditor changes. Please let me know if this is what you are trying to achieve or I have misunderstood you in some way.
I am not quite following, the basic issue is that, for a new record, it does not seem to update the style when you exit a cell, only when you exit the record.