Hello, I implemented a dialog in which the user has the opportunity to add a new row in a XamGrid. He can do this over pressing on "F2" or "Enter" . For me, is that not user friendly.
I want to make it possible for the user to add a new row on clicking the lefty "plus"-icon.
Is that possible? And if so, how? Can I maybe change the style so that the "plus"-icon is a button? Thanks in advance! Regards, Djumana
Hi,
You can find few very useful articles in our Desingers Guide. The part that you have to customize is AddNewRowSelectorCellControl. You then have to set the new Style to xamGrid.AddNewRowSettings.RowSelectorStyle.
The best way to attach a custom behaviour when the cell is clicked is to create a custom command. You can use the snippet below as a starting point:
public class MyCustomRowCommand : RowCommandBase { protected override void ExecuteCommand(Row row) { MessageBox.Show("Clicked"); } } public class MyCustomCommandSource : CommandSource { protected override System.Windows.Input.ICommand ResolveCommand() { return new MyCustomRowCommand(); } }
... <LinearGradientBrush x:Key="HeaderCellGlyphBrush" StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Offset="0" Color="#FFa3aeb9" /> <GradientStop Offset="0.37" Color="#FF8399a9" /> <GradientStop Offset="0.370" Color="#FF718597" /> <GradientStop Offset="1" Color="#FF617583" /> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> <Style x:Key="Style1" TargetType="igPrim:AddNewRowSelectorCellControl"> <Setter Property="Background" Value="Red" /> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="igPrim:AddNewRowSelectorCellControl"> <Grid> <Border x:Name="border" IsHitTestVisible="False" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" /> <Grid> <ig:Commanding.Commands> <local:MyCustomCommandSource EventName="MouseLeftButtonDown"/> </ig:Commanding.Commands> <Path Fill="#ffffff" Stretch="Fill" Stroke="{StaticResource HeaderCellGlyphBrush}" StrokeThickness="1" Data="M3.5,0.5 L6.5,0.5 L6.5,3.5 L9.5,3.5 L9.5,6.5 L6.5,6.5 L6.5,9.5 L3.5,9.5 L3.5,6.5 L0.5,6.5 L0.5,3.5 L3.5,3.5 z" Width="10" Height="10" /> </Grid> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> ... <ig:XamGrid x:Name="XGrid" ItemsSource="{Binding Data}"> <ig:XamGrid.AddNewRowSettings> <ig:AddNewRowSettings RowSelectorStyle="{StaticResource Style1}" AllowAddNewRow="Top" /> </ig:XamGrid.AddNewRowSettings> ...
Hope this helps
thank you very much!
How can I programmatically add a new row?
Bye,
Djumana