这是问题所在。我有一个网格,其中包含一些用xaml编写的数据:
<ItemsControl x:Name="ItemsControl" ItemsSource="{Binding Path=MyObjectCollection, UpdateSourceTrigger = PropertyChanged}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="27"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" MaxHeight="75" MinHeight="30"></RowDefinition>
</Grid.RowDefinitions>
<Label Name="LabelNumber" Content="{Binding ObjectID}" Grid.Column="0" Style="{StaticResource MyStyleLabel}" />
<control:FocusMeterControl x:Name="HorizontalFocusMeterControl" Value="{Binding ObjectProperty}" Height="Auto" Grid.Column="1" />
<Button Name="RemoveObject" Content="-" Grid.Column="2" Margin="5,0,0,0" Click="ButtonBase_OnClick" Tag="{Binding Point}" Style="{StaticResource MyStyleButton}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
正如您所看到的,我正在为“MyObjectCollection”中的每个成员创建一个新网格。理想情况下,我认为我应该创建一行,因为这会使我的下一个问题 - 真正的问题更容易。
但是,即使可能,我还没有找到任何在xaml中执行此操作的好方法。如果没有从c#手动填充集合并在我的对象中手动设置row属性以便执行类似的操作,这是否可行
<Label Name="LabelNumber" Grid.Row="{Binding ManuallyCalculatedRowID}" ... />
我的主要问题是我希望网格/行都同样高,如果可能的话填写父窗口。如果父窗口太大,MaxHeight应该适用,我只想在下面有一些空白区域。
如果有任何不同,则父控件是Windows窗体ElementHost。
如果您需要任何其他信息,请与我们联系。
答案 0 :(得分:0)
为了使所有行具有相同的高度,我们可以使用ItemsPanelTemplate并将其设置为UniformGrid来处理相同的大小调整问题:
<ItemsControl x:Name="ItemsControl" ItemsSource="{Binding Path=MyObjectCollection, UpdateSourceTrigger = PropertyChanged}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="27"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Label Name="LabelNumber" Content="{Binding ObjectID}" Grid.Column="0" Style="{StaticResource MyStyleLabel}" />
<control:FocusMeterControl x:Name="HorizontalFocusMeterControl" Value="{Binding ObjectProperty}" Height="Auto" Grid.Column="1" />
<Button Name="RemoveObject" Content="-" Grid.Column="2" Margin="5,0,0,0" Click="ButtonBase_OnClick" Tag="{Binding Point}" Style="{StaticResource MyStyleButton}" />
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
请注意,我删除了ItemTemplate
中的行定义,以解除项目的垂直大小限制。不确定这是否能解答您的问题,但这可以成为解决问题的良好起点。