2
Grid
ベースのItemsControl
を使用して、一連のプロパティを表示しています。利用可能なスペースが小さすぎる場合、制御は次のようにレンダリングされる:グリッド列に共有サイズグループの横に最小幅を与える
項目ごとDataTemplate
ラベル用SharedSizeGroup
とGrid
を使用します。私が望むのは、入力ボックスに50pxという最小幅を与え、必要に応じてラベルの幅を小さくすることです。 MinWidth
を設定しようとすると、ボックスはグリッドの外側にレンダリングされます。SharedSizeGroup
のように常に優先順位が高くなりました。
ここに関連するXAMLがあります。各項目のデフォルトのテンプレート...
<DataTemplate DataType="{x:Type local:ViewModel+PropertyWrapper}">
<Grid Margin="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" SharedSizeGroup="Key"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" x:Name="PLabel" Text="{Binding Name}" Margin="0,0,4,0"/>
<TextBox Grid.Column="1" Text="{Binding Value}"/>
</Grid>
</DataTemplate>
...と周りに他の方法をお試しくださいリスト
<ItemsControl x:Key="PropertyListNoFill" x:Shared="False" Margin="0,3,0,0" Background="{x:Null}" BorderBrush="{x:Null}"
ItemsSource="{Binding}"
Grid.IsSharedSizeScope="True"
HorizontalContentAlignment="Stretch"
ItemTemplateSelector="{StaticResource PropertyTemplateSelector}" >
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<DockPanel LastChildFill="False" IsItemsHost="True"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="DockPanel.Dock" Value="Top"/>
</Style>
</ItemsControl.ItemContainerStyle>
</ItemsControl>