كيفية محاذاة شبكات منفصلة تم إنشاؤها عبر قوالب على طول أعمدة / صفوفها؟
-
25-09-2019 - |
سؤال
أعتقد أن الصورة في هذه الحالة تساوي ألف كلمة:
XAML:
<Grid>
<ItemsControl ItemsSource="{Binding Persons}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" Background="LightBlue"/>
<TextBlock Text="{Binding Age}" Background="LightPink" Grid.Column="1"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
ملاحظة - لا أريد تعيين محدد مع العمود الأول ، ولكن لإعطائه الحد الأقصى الذي يحتاجه.
تحديث:لقد جربت رابط كولين وفعلت هذا:
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A" Width="Auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
لكنها لم تنجح بالنسبة لي.
المحلول
تحتاج إلى استخدام مجموعة مشتركة لكل عمود.
تحقق من هذا البرنامج التعليمي ...
http://blogs.interknowlogy.com/johnbowen/archive/2007/08/27/21132.aspx
أيضًا ، تأكد من أن خاصية نطاق الحجم المشترك صحيحة لشبكتك:
<Grid Grid.IsSharedSizeScope="True">
<ItemsControl ItemsSource="{Binding Persons}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name}" Background="LightBlue"/>
<TextBlock Text="{Binding Age}" Background="LightPink" Grid.Column="1"/>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
نصائح أخرى
بدلاً من استخدام الشبكة ماذا عن استخدام DataGrid؟
<Grid>
<DataGrid ItemsSource="{Binding}"
AutoGenerateColumns="False"
IsReadOnly="True"
CanUserAddRows="False"
ColumnHeaderHeight="0"
GridLinesVisibility="None">
<DataGrid.Resources>
<Style TargetType="DataGridCell" x:Key="NameStyle">
<Setter Property="Background" Value="LightBlue"/>
<Setter Property="BorderBrush" Value="LightBlue"/>
</Style>
<Style TargetType="DataGridCell" x:Key="AgeStyle">
<Setter Property="Background" Value="LightPink"/>
<Setter Property="BorderBrush" Value="LightPink"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}"
CellStyle="{StaticResource ResourceKey=NameStyle}"/>
<DataGridTextColumn Binding="{Binding Age}"
CellStyle="{StaticResource ResourceKey=AgeStyle}"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
لا تنتمي إلى StackOverflow