【发布时间】:2014-03-11 22:32:33
【问题描述】:
这就是问题所在。我有一个网格,其中包含一些用 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# 手动填充集合并手动在我的对象中设置行属性以执行类似的操作,这是否可行
<Label Name="LabelNumber" Grid.Row="{Binding ManuallyCalculatedRowID}" ... />
我的主要问题是我希望网格/行都一样高,如果可能的话,填写父窗口。如果父窗口太大,应该应用 MaxHeight,我只想在下面留一些空白。
父控件是一个 Windows 窗体 ElementHost,如果这有什么不同的话。
如果您需要任何其他信息,请告诉我。
【问题讨论】: