how Can i create Xam grid dynamically?
vikas227,
Begin by adding references to the following assemblies
InfragisticsWPF3.v10.3InfragisticsWPF3.Editors.v10.3InfragisticsWPF3.DataPresenter.v10.3
Or another version of the same assemblies.
Once that is done, add a using (C#) or Imports (VB) statement for the Infragistics.Windows.DataPresenter namespace:
using Infragistics.Windows.DataPresenter;
Imports Infragistics.Windows.DataPresenter
Then simply create an instance of the XamDataGrid and make it the child of a Panel or Window:
C#:
Window w = new Window();w.Title = "Dynamically Created Window With XamDataGrid";
XamDataGrid xdg = new XamDataGrid();xdg.DataSource = GetData(); // Where GetData returns an IEnumerablew.Content = xdg;w.Show();
VB:
Dim w as Window new Window()w.Title = "Dynamically Created Window With XamDataGrid"
Dim xdg as XamDataGrid new XamDataGrid()xdg.DataSource = GetData() ' Where GetData returns an IEnumerablew.Content = xdgw.Show()
Let me know if you have any questions with this matter.
How can i create Field layouts dynamically and set others setting like margin,width etc?
For the FieldLayouts, you could use the FieldLayout that is automatically generated and then modify it to fit your needs by setting the Visibility of individual Fields. You could also create the FieldLayout object dynamically in code similar to the example I provided where the XamDataGrid is created in code and then once the object is created you could add it to the FieldLayouts collection of the XamDataGrid.
For example:
FieldLayout fl = new FieldLayout();fl.Fields.Add(new Field() { Name = "FieldA" });fl.Fields.Add(new Field() { Name = "FieldB" });xdg.FieldLayouts.Add(fl);
Both the Padding and Margin take a Thickness structure so you would create a new instance of a Thickness structure and then assign it to the Padding or Margin property. There are more details on the Thickness structure on MSDN: http://msdn.microsoft.com/en-us/library/system.windows.thickness.aspx
xdg.Padding = new Thickness(4);xdg.Margin = new Thickness(4);
For the Width, this takes a double and could be set with the following:
xdg.Width = 200;
thanks for brilliant help..
i have created a grid using code you suggest me. i am getting one error.when grid have only one record or no record it show pure blank.i want when gird have no record it show at least column name and when grid have single record it must show in grid.one important thing i want to know you i am creating this dynamic grid in Xam Tiles Controls.i am created 30 Xam tiles dynamically and 30 grid for these 30 tiles......
What are you binding the XamDataGrid to? You best options are an ObservableCollection<T> or a BindingList<T>.
i am Binding List<T>.but i don,t know why is this error.please help me because i have to show it client..
my code is here:
XamDataGrid xdg = new XamDataGrid(); xdg.Width = 500; xdg.HorizontalAlignment = HorizontalAlignment.Left; xdg.VerticalAlignment = VerticalAlignment.Top; xdg.GroupByArea.Visibility = System.Windows.Visibility.Hidden; Grid.SetRow(xdg, 1); Grid.SetColumn(xdg, 1); MainGrid.Children.Add(xdg); xdg.FieldLayoutSettings.AutoFitMode = AutoFitMode.ExtendLastField; FieldLayout fl = new FieldLayout(); fl.Fields.Add(new Field() { Name = "code" }); fl.Fields.Add(new Field() { Name = "visitNumber" }); fl.Fields.Add(new Field() { Name = "visitorNumber" }); xdg.FieldLayouts.Add(fl); DataTable dt = new DataTable(); dt = GetCountryReportData(reportDate); List<ReportCountry> list = new List<ReportCountry>(); list = GetCountryReport(reportDate); xdg.DataSource = list;
Please let me know if I may be of further assistance on this.
Hello,
It will work if you also set the MaxHeight, MinHeight, MaxWidth, and MinWidth as well:
void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e){ if (e.HeightChanged) { this.xamTilesControl1.NormalModeSettings.TileConstraints.PreferredHeight = this.xamTilesControl1.NormalModeSettings.TileConstraints.MinHeight = this.xamTilesControl1.NormalModeSettings.TileConstraints.MaxHeight =this.xamTilesControl1.ActualHeight / 3 - 10; } if (e.WidthChanged) { this.xamTilesControl1.NormalModeSettings.TileConstraints.PreferredWidth = this.xamTilesControl1.NormalModeSettings.TileConstraints.MinWidth = this.xamTilesControl1.NormalModeSettings.TileConstraints.MaxWidth = this.xamTilesControl1.ActualWidth / 3; }}
Hi..
i checked it,window event is firing.why it not working.please check the Xaml code i think i have to change some where in it..
igTiles:XamTilesControl.MaximizedModeSettings> <igTiles:MaximizedModeSettings VerticalTileAreaAlignment="Top"> <igTiles:MaximizedModeSettings.MinimizedExpandedTileConstraints> <igTiles:TileConstraints MinWidth="180" MaxHeight="60" MaxWidth="180" /> </igTiles:MaximizedModeSettings.MinimizedExpandedTileConstraints> <igTiles:MaximizedModeSettings.MinimizedTileConstraints> <igTiles:TileConstraints MinWidth="180" MaxHeight="60" MaxWidth="180"/> </igTiles:MaximizedModeSettings.MinimizedTileConstraints> </igTiles:MaximizedModeSettings> </igTiles:XamTilesControl.MaximizedModeSettings
When the code was added, did you also add the event handler. To verify that the event is wired up correctly place a break point in the event handler and see if it is hit when you resize the window. If the break point is not hit check to see that you have wired up the event either in XAML or in C# code.
i place that code void MainWindow_SizeChanged(object sender, SizeChangedEventArgs e){ if (e.HeightChanged) { this.xamTilesControl1.NormalModeSettings.TileConstraints.PreferredHeight = this.xamTilesControl1.ActualHeight / 3-10; } if (e.WidthChanged) { this.xamTilesControl1.NormalModeSettings.TileConstraints.PreferredWidth = this.xamTilesControl1.ActualWidth / 3; }}
but there is no effect,Xam tiles still not customize according to screen please have a look on xaml Source code and tell me what change i have to do for it(customize according to screen)
<igTiles:XamTilesControl Name="xamTilesControl1" HeaderPath="ReportDate" Margin="10,0,0,12" InterTileSpacingX="5" InterTileSpacingY="5" Theme="LunaNormal"> <igTiles:XamTilesControl.NormalModeSettings> <igTiles:NormalModeSettings> <igTiles:NormalModeSettings.TileConstraints> <igTiles:TileConstraints MaxHeight="60" MaxWidth="180" /> </igTiles:NormalModeSettings.TileConstraints> </igTiles:NormalModeSettings> </igTiles:XamTilesControl.NormalModeSettings> <igTiles:XamTilesControl.MaximizedModeSettings> <igTiles:MaximizedModeSettings VerticalTileAreaAlignment="Top"> <igTiles:MaximizedModeSettings.MinimizedExpandedTileConstraints> <igTiles:TileConstraints MinWidth="180" MaxHeight="60" MaxWidth="180" /> </igTiles:MaximizedModeSettings.MinimizedExpandedTileConstraints> <igTiles:MaximizedModeSettings.MinimizedTileConstraints> <igTiles:TileConstraints MinWidth="180" MaxHeight="60" MaxWidth="180"/> </igTiles:MaximizedModeSettings.MinimizedTileConstraints> </igTiles:MaximizedModeSettings> </igTiles:XamTilesControl.MaximizedModeSettings> <igTiles:XamTilesControl.Resources> <BooleanToVisibilityConverter x:Key="BoolToVisConverter"/> <Style x:Key="CaptionButtonStyleBase" TargetType="{x:Type ButtonBase}"> <Setter Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Offset="0" Color="#FFffffff"/> <GradientStop Offset="0.49" Color="#FFe2e2e2"/> <GradientStop Offset="0.5" Color="#FFcccccc"/> <GradientStop Offset="1" Color="#FFbbbbbb"/> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="Foreground" Value="Black"/> <Style.Triggers> <DataTrigger Binding="{Binding Path=IsMouseOver, RelativeSource={x:Static RelativeSource.Self}}" Value="True"> <Setter Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Offset="0" Color="#FF99ff99"/> <GradientStop Offset="0.49" Color="#FF00cc66"/> <GradientStop Offset="0.5" Color="#FF009933"/> <GradientStop Offset="1" Color="#FF003300"/> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="Foreground" Value="White"/> </DataTrigger> <Trigger Property="IsPressed" Value="True"> <Setter Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Offset="0" Color="#FFff9999"/> <GradientStop Offset="0.49" Color="#FFcc6666"/> <GradientStop Offset="0.5" Color="#FF993333"/> <GradientStop Offset="1" Color="#FF990000"/> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="Foreground" Value="White"/> </Trigger> <Trigger Property="IsEnabled" Value="False"/> </Style.Triggers> </Style> <Style x:Key="{x:Static igTiles:TileHeaderPresenter.MaximizeButtonStyleKey}" BasedOn="{StaticResource CaptionButtonStyleBase}" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type Button}"> <ControlTemplate.Resources> <Storyboard x:Key="BtnFadeIn"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="MaximizeGlyph" Storyboard.TargetProperty="(UIElement.Opacity)"> <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1"/> </DoubleAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="RestoreGlyph" Storyboard.TargetProperty="(UIElement.Opacity)"> <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1"/> </DoubleAnimationUsingKeyFrames> </Storyboard> </ControlTemplate.Resources> <Grid> <Path Width="75" Height="15" Cursor="Hand" Data="M -0.23,15 C-0.23,15 75,15 75,15 75,15 75,0 75,0 75,0 24.76,0 24.76,0 22.26,0 17.99,1.76 16.22,3.53 16.22,3.53 8.30,11.46 8.30,11.46 6.53,13.23 2.26,15 -0.23,15 z" Fill="{TemplateBinding Background}" SnapsToDevicePixels="True" Stretch="Fill"/> <Path x:Name="MaximizeGlyph" Width="8" Height="7" Margin="12,0,0,0" Data="M 1,3 C1,3 7,3 7,3 7,3 7,6 7,6 7,6 1,6 1,6 1,6 1,3 1,3 zM 0,1 C0,1 0,7 0,7 0,7 8,7 8,7 8,7 8,1 8,1 8,1 8,0.87 8,0.87 8,0.39 7.60,0 7.12,0 7.12,0 0.87,0 0.87,0 0.39,0 0,0.39 0,0.87 0,0.87 0,1 0,1 z" Fill="{TemplateBinding Foreground}" Opacity="0" SnapsToDevicePixels="True"/> <Path x:Name="RestoreGlyph" Width="8" Height="8" Margin="12,0,0,0" Data="M 1,5 C1,5 2,5 2,5 2,5 5,5 5,5 5,5 5,7 5,7 5,7 1,7 1,7 1,7 1,5 1,5 zM 6,4 C6,4 6,3.87 6,3.87 6,3.39 5.60,3 5.12,3 5.12,3 3,3 3,3 3,3 3,2 3,2 3,2 7,2 7,2 7,2 7,4 7,4 7,4 6,4 6,4 zM 0,4 C0,4 0,8 0,8 0,8 6,8 6,8 6,8 6,5 6,5 6,5 8,5 8,5 8,5 8,1 8,1 8,1 8,0.87 8,0.87 8,0.39 7.60,0 7.12,0 7.12,0 2.87,0 2.87,0 2.39,0 2,0.39 2,0.87 2,0.87 2,1 2,1 2,1 2,3 2,3 2,3 0.87,3 0.87,3 0.39,3 0,3.39 0,3.87 0,3.87 0,4 0,4 z" Fill="{TemplateBinding Foreground}" Opacity="0" SnapsToDevicePixels="True" Visibility="Collapsed"/> </Grid> <ControlTemplate.Triggers> <DataTrigger Binding="{Binding Path=Tag.State, RelativeSource={RelativeSource Self}}" Value="Maximized"> <Setter TargetName="RestoreGlyph" Property="Visibility" Value="Visible"/> <Setter TargetName="MaximizeGlyph" Property="Visibility" Value="Collapsed"/> </DataTrigger> <DataTrigger Binding="{Binding Path=Tile.IsMouseOver, RelativeSource={x:Static RelativeSource.TemplatedParent}}" Value="True"> <DataTrigger.EnterActions> <BeginStoryboard x:Name="BtnFadeIn_BeginStoryboard" Storyboard="{StaticResource BtnFadeIn}"/> </DataTrigger.EnterActions> <DataTrigger.ExitActions> <StopStoryboard BeginStoryboardName="BtnFadeIn_BeginStoryboard"/> </DataTrigger.ExitActions> </DataTrigger> </ControlTemplate.Triggers> </ControlTemplate> </Setter.Value> </Setter> </Style> <Style TargetType="{x:Type igTiles:TileHeaderPresenter}"> <Setter Property="Foreground" Value="White"/> <Setter Property="Background"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Offset="0" Color="#FF0099cc"/> <GradientStop Offset="0.5" Color="#FF003399"/> <GradientStop Offset="0.50" Color="#FF000066"/> <GradientStop Offset="1" Color="#FF000099"/> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="BorderBrush"> <Setter.Value> <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Offset="0" Color="#00ffffff"/> <GradientStop Offset="0.20" Color="#FFffffff"/> <GradientStop Offset="1" Color="#00ffffff"/> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Setter.Value> </Setter> <Setter Property="Padding" Value="4,0,2,0"/> <Setter Property="BorderThickness" Value="0,1,0,0"/> <Setter Property="MinHeight" Value="25"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type igTiles:TileHeaderPresenter}"> <ControlTemplate.Resources> <Storyboard x:Key="BtnFadeIn"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="closeBtn" Storyboard.TargetProperty="(UIElement.Opacity)"> <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1"/> </DoubleAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="maximizeBtn" Storyboard.TargetProperty="(UIElement.Opacity)"> <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1"/> </DoubleAnimationUsingKeyFrames> </Storyboard> </ControlTemplate.Resources> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="*"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Border Grid.ColumnSpan="2" Background="{TemplateBinding Background}" CornerRadius="1" SnapsToDevicePixels="True"> <Border Margin="0,1,0,0" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="0,1,0,0" CornerRadius="1" SnapsToDevicePixels="True"> <Grid/> </Border> </Border> <ContentPresenter Margin="5,0,0,0" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/> <Path Width="75" Height="15" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Bottom" Data="M -0.23,15 C-0.23,15 75,15 75,15 75,15 75,0 75,0 75,0 24.76,0 24.76,0 22.26,0 17.99,1.76 16.22,3.53 16.22,3.53 8.30,11.46 8.30,11.46 6.53,13.23 2.26,15 -0.23,15 z" Fill="White" SnapsToDevicePixels="True" Stretch="Fill" Visibility="Collapsed"/> <Path Width="186" Height="16" Grid.ColumnSpan="3" HorizontalAlignment="Right" Margin="0,0,0,1" VerticalAlignment="Bottom" Data="M 0,15 C0,15 0,16 0,16 0,16 110.76,16 110.76,16 113.26,16 117.53,14.23 119.30,12.46 119.30,12.46 127.22,4.53 127.22,4.53 128.99,2.76 133.26,1 135.76,1 135.76,1 186,1 186,1 186,1 186,0 186,0 186,0 135.76,0 135.76,0 133.26,0 128.99,1.76 127.22,3.53 127.22,3.53 119.30,11.46 119.30,11.46 117.53,13.23 113.26,15 110.76,15 110.76,15 0,15 0,15 z" SnapsToDevicePixels="True" Stretch="Fill"> <Path.Fill> <LinearGradientBrush StartPoint="0,0" EndPoint="1,0"> <LinearGradientBrush.GradientStops> <GradientStopCollection> <GradientStop Offset="0" Color="#00ffffff"/> <GradientStop Offset="0.34" Color="#FFffffff"/> <GradientStop Offset="1" Color="#00ffffff"/> </GradientStopCollection> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </Path.Fill> </Path> <DockPanel Grid.Column="1" Grid.ColumnSpan="1" HorizontalAlignment="Right" VerticalAlignment="Bottom"> <Button x:Name="maximizeBtn" ClickMode="Release" Command="{x:Static igTiles:Tile.ToggleMaximizedCommand}" CommandParameter="{TemplateBinding Tile}" DockPanel.Dock="Right" Focusable="False" Style="{DynamicResource {x:Static igTiles:TileHeaderPresenter.MaximizeButtonStyleKey}}" Tag="{TemplateBinding Tile}" Visibility="{Binding Tile.MaximizeButtonVisibilityResolved, RelativeSource={RelativeSource TemplatedParent}}"/> <Button x:Name="closeBtn" Command="{x:Static igTiles:Tile.CloseCommand}" CommandParameter="{TemplateBinding Tile}" DockPanel.Dock="Right" Focusable="False" Opacity="0" Style="{DynamicResource {x:Static igTiles:TileHeaderPresenter.CloseButtonStyleKey}}" Visibility="{Binding Tile.CloseButtonVisibilityResolved, RelativeSource={RelativeSource TemplatedParent}}"/> <Image x:Name="image" DockPanel.Dock="Left" Source="{Binding Tile.Image, RelativeSource={RelativeSource TemplatedParent}}" Stretch="None" Visibility="{Binding Tile.HasImage, Converter={StaticResource BoolToVisConverter}, RelativeSource={RelativeSource TemplatedParent}}"/> </DockPanel> </Grid> </ControlTemplate> </Setter.Value> </Setter> </Style> </igTiles:XamTilesControl.Resources> <igTiles:XamTilesControl.ItemTemplateMaximized> <DataTemplate > <StackPanel Margin="10, 10, 0, 0"> </StackPanel> </DataTemplate> </igTiles:XamTilesControl.ItemTemplateMaximized> <igTiles:XamTilesControl.ItemTemplate> <DataTemplate> </DataTemplate> </igTiles:XamTilesControl.ItemTemplate> </igTiles:XamTilesControl>