アイテムのリストを表示するページがあります。
私のマークアップは基本的に
<Grid x:Name="ItemGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30*" x:Name="Column1Header"/>
<ColumnDefinition Width="15*" x:Name="Column2Header"/>
<ColumnDefinition Width="15*" x:Name="Column3Header"/>
...
<ItemsControl Name="ItemsList">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid x:Name="Items">
<ColumnDefinition Width="30*" x:Name="Column1"/>
<ColumnDefinition Width="15*" x:Name="Column2"/>
<ColumnDefinition Width="15*" x:Name="Column3"/>
...
スター サイズ設定を使用する 2 つの個別のグリッド (つまり、SharedSizeGroups を使用できません。非表示にする構成オプションColumn3
とヘッダーを追加する必要があります。コードで幅を 0 に設定することでヘッダーを簡単に非表示にできますが、わかりません。 out how to hide Column3
. 項目をループすると、常に null になります。
foreach (var item in ItemsList.Items)
{
var container = ItemsList.ItemContainerGenerator.ContainerFromItem(item) as FrameworkElement;
// container is null
}
基本的に、2 つの列は同じサイズである必要があります。Grid は 30 秒ごとに項目の新しいリストが取り込まれますが、読み込まれるとグリッドのサイズは変更されません。
また、幅を定義するスタイルを両方の列で共有してから、コードでスタイルを変更しようとしましたが、うまくいきませんでした。
<Style TargetType="{x:Type ColumnDefinition}" x:Key="Column3Width">
<Setter Property="Width" Value="15*"/>
</Style>
それを変更すると、「'SetterBase' が使用中 (封印) になった後は、変更できません。」