ユーザーコントロールがあり、UserControlと呼ばれます。これには、次の列定義を持つグリッドがあります。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="B"/>
<ColumnDefinition Width="*" SharedSizeGroup="C"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="D"/>
<ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="E"/>
<ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="F"/>
<ColumnDefinition Width="110" SharedSizeGroup="G"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/>
</Grid.ColumnDefinitions>
また、メインウィンドウにはグリッド自体が含まれており、グリッドに次のプロパティが定義されています。
Grid.IsSharedSizeScope="True"
ここで、MainWindowのグリッドにUserControlsをいくつか追加しました(それぞれが個別の行に)。私の目標は、異なるUserControlsの各列幅を同期したままにすることです。 SharedSizeGroupを使用すると、1つを除いてすべてが正常に機能します。幅が*の列は正常に動作しないようです。 *列幅は、代わりにAutoであるかのように設定されているようです。
SharedSizeGroupおよび*サイジングに制限/問題はありますか?これは列の幅を同期させる最良の方法のようですが、これを修正することはできません。
ありがとう。
サイズ共有に関与する列と行は、星のサイズを考慮しません。サイズ共有シナリオでは、スターのサイズ設定は自動として扱われます
スターを使用する場合、すべての列は同じ幅になるため、自動サイズ調整の側面を気にしない場合は、すべてに同じSharedSizeGroup
を割り当てる必要があります。
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="A"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="B"/>
<ColumnDefinition Width="*" SharedSizeGroup="StarDontWork"/>
<ColumnDefinition Width="Auto" SharedSizeGroup="D"/>
<ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/>
<ColumnDefinition MinWidth="30" Width="*" SharedSizeGroup="StarDontWork"/>
<ColumnDefinition Width="110" SharedSizeGroup="G"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="H"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="I"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="J"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="K"/>
<ColumnDefinition MinWidth="30" Width="Auto" SharedSizeGroup="L"/>
</Grid.ColumnDefinitions>
(この動作から、Width
が設定されているときにSharedSizeGroup
プロパティを削除できることにもなります)
すべての自動サイズ変更列が共有サイズグループにある場合、すべてのスターサイズ変更列のサイズは、スコープ内のすべてのグリッドのスターサイズ列に分配される残りの未使用スペースと同じになると推測できます。 。
簡単な例:
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition SharedSizeGroup="B" Width="*"/>
<ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>
説明したように、Width="*"
は何もしませんが、列として0
および2
は同期され、列1
も同期する必要があるため、単にSharedSizeGroup
をドロップできます。
<Grid.ColumnDefinitions>
<ColumnDefinition SharedSizeGroup="A"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition SharedSizeGroup="C"/>
</Grid.ColumnDefinitions>