سعی داشتم که یک کنترل سفارشی شده دیتاگرید بسازم اما با مشکل مواجه شدم. مشکلم هم اینه که ستون ها و سطر ها نمایش داده نمی شوند.
<public class DataGridControl : DataGrid { static DataGridControl() { DefaultStyleKeyProperty.OverrideMetadata(typeof(Da taGridControl), new FrameworkPropertyMetadata(typeof(DataGridControl)) ); } }
<Style TargetType="{x:Type CustomControl:DataGridControl}"> <Setter Property="RowHeaderStyle"> <Setter.Value> <Style TargetType="{x:Type DataGridRowHeader}"> <Setter Property="Background" Value="White" /> </Style> </Setter.Value> </Setter> <Setter Property="CellStyle"> <Setter.Value> <Style TargetType="{x:Type DataGridCell}"> <Style.Triggers> <Trigger Property="IsSelected" Value="True"> <Setter Property="BorderThickness" Value="0" /> </Trigger> </Style.Triggers> </Style> </Setter.Value> </Setter> <Setter Property="RowStyle"> <Setter.Value> <Style TargetType="{x:Type DataGridRowHeader}"> <Setter Property="Background" Value="White" /> </Style> </Setter.Value> </Setter> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type CustomControl:DataGridControl}"> <Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}"> </Border> </ControlTemplate> </Setter.Value> </Setter> </Style>
و اینطوری هم استفاده کردم.
xmlns:CustomControl="clr-namespace:Plugins.CustomControl
<CustomControl:DataGridControl x:Name="DG" Grid.Row="1" Grid.RowSpan="2"> <DataGrid.Columns> <DataGridTextColumn Header="Story" Binding="{Binding Story}" Width="auto"/> <DataGridTextColumn Header="Diaphragm" Binding="{Binding ...}" Width="auto"/> <DataGridTextColumn Header="Load Case" Binding="{Binding ...}" Width="auto"/> <DataGridTextColumn Header="Ux (CM)" Binding="{Binding .., Converter={StaticResource decimalPrecisionConverter}}" Width="auto"/> <DataGridTextColumn Header="Uy (CM)" Binding="{Binding ..., Converter={StaticResource decimalPrecisionConverter}}" Width="auto"/> <DataGridTextColumn Header="Point" Binding="{Binding Point}" Width="auto"/> <DataGridTextColumn Header="X (CM)" Binding="{Binding X, Converter={StaticResource decimalPrecisionConverter}}" Width="auto"/> <DataGridTextColumn Header="Y (CM)" Binding="{Binding Y, Converter={StaticResource decimalPrecisionConverter}}" Width="auto"/> <DataGridTextColumn Header="Z (CM)" Binding="{Binding Z, Converter={StaticResource decimalPrecisionConverter}}" Width="auto"/> <DataGridTextColumn Header="Drift(X)" Binding="{Binding ..., Converter={StaticResource decimalPrecisionConverter}}" Width="auto"/> <DataGridTextColumn Header="Drift(Y)" Binding="{Binding ..., Converter={StaticResource decimalPrecisionConverter}}" Width="auto"/> </DataGrid.Columns> </CustomControl:DataGridControl>
اما نمایشش در ویژوال استودیو اینطوریه:
در زمان اجرا هم همینطوریه.
itemsource را پر هم می کنم. خطا نمیده اما نمایش نمیده.(با دیتاگرید عادی کاملا برنامه درسته)
آیا نکته خاصی داره که انجام ندادم؟
ممنون میشم راهنمایی کنید
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)