Best regards
It might be that the border style is being overriden by something else. Are you loading a Style Library into your application? Look for "StyleManager.Load" in your code. Are you loading a layout into your grid that might be blowing away this setting? Look for LoadFromXml or LoadFromBinary or maybe just the Load method on the grid.DisplayLayout or e.Layout.
[EventSubscription(EventTopicNames.StyleChanged, ThreadOption.Publisher)] public void OnStyleChanged(object sender, ChangeStyleArgs eventArgs) { Infragistics.Win.AppStyling.StyleManager.Load(new MemoryStream(ShellApplication.ResourceManager.GetStyleFile(eventArgs.StyleLibrary))); }
As a test, try commenting out that line of code and see if it works. If so, then that would indicate that the Style Library is explicitly setting the BorderStyle on the cell. So you will either need to change the Style Library to use rounded corners, or else not set the BorderStyle in the Style Library at all. That can get a little tricky since I think the BorderStyle could be set on a variety or different UI Roles.
So I recommend first confirming that it is, in fact, the StyleLibrary that is causing the borders not to change. And if you have trouble figuring out how to get it to work from there, perhaps you could post your style library file here and we can check it out and see if we can figure out how to modify it to get what you want.
Ok Mike, thank you very much for those explanations.I will go into all of this and see what I can do..Best regards
Thanks Mike,I will try to do according to your advice.I'll keep you posted.Best regards
Hi Christian,
So this question has been kinda rolling around in the back of mind, and I think the best thing for you to do would be to do it backwards. That is... set BorderStyleCell to Rounded4Thick and then turn OFF the borders on the cells you DON'T want using the DrawFilter. I think you have to do it that way, because of BorderStyleCell on the Override is NOT set to Rounded4Thick, the grid won't know to leave space for that extra-thick border and it won't know not to overlap the cells.
So then all your DrawFilter has to do is handle the BeforeDrawBorders phase for cells and return true to prevent that cell from showing a border, or else return false to just let it draw the border. So the DrawFilter would look something like this. This DrawFilter looks for cells in the "Int32 1" or "Int32 2" column whose value is greater than 2 and returns false to let those cells go ahead and draw the rounded border. And it returns true for any other cell(s), so they draw no borders.
internal class RoundedBordersDrawFilter : IUIElementDrawFilter { public bool DrawElement(DrawPhase drawPhase, ref UIElementDrawParams drawParams) { var cell = drawParams.Element.GetContext(typeof(UltraGridCell)) as UltraGridCell; if (null != cell) { switch (cell.Column.Key) { case "Int32 1": case "Int32 2": var cellValue = (int)cell.Value; if (cellValue > 2) return false; break; } } return true; } public DrawPhase GetPhasesToFilter(ref UIElementDrawParams drawParams) { if (drawParams.Element is CellUIElementBase) return DrawPhase.BeforeDrawBorders; return DrawPhase.None; } }
Ok Mike,thanks for all your help.I will try and if I can do it, I will send you the code.
Best regardsChristian Pokorny
It's really hard for me to guide you here without knowing:1) What criteria you are using to determine which cells will have a rounded borders2) What border style you are using for the other rows/cellsGenerally speaking, if you want to highlight certain cells in the grid, I recommend doing it using colors, rather than borders, because borders are very tricky and cells overlap.
Thanks for the information, Mike.I also tried to do it with a DrawFilter but I did not find which method and which configuration should be used.Could you give me this information so that I can still try what it looks like?Thank you in advance.