こんにちはStackoverflowers!
私はXAMLに検索バーを含むリストを作成しています私がMainControllerの新しいUserControlをMainWindow.xamlで使用しようとすると、UserControlのButtonがデザイナーで切り取られ、フィットするようにサイズが変更されるのはなぜですか?
MainWindow.xaml本体は次のとおりです。
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="8*" />
</Grid.ColumnDefinitions>
<controls:SearchBox Grid.Column="0"/>
</Grid>
そしてここにカスタムコントロールの本体があります:
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="8*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<TextBox
Grid.Row="0"
VerticalAlignment="Center"
Text="Search"
TextBlock.FontStyle="Italic"
TextBlock.TextAlignment="Left"
/>
<!-- Content="{StaticResource FilterLogo}" -->
<Button
Grid.Column="1"
Content="Filter"
VerticalAlignment="Center"
HorizontalAlignment="Stretch">
</Button>
<ListBox
Grid.Row="1"
Grid.ColumnSpan="2"
ItemsSource="{Binding DataContext}"
SelectedItem="{Binding DataContext}"
ScrollViewer.VerticalScrollBarVisibility="Visible">
</ListBox>
なぜ私のコントロールが正直に切り詰められたのか本当に知りません。
回答:
回答№1は1短い答え:それはフィットしません。
メインウィンドウには2つの列があります。 UserControlを配置する列を指定していないので、既定では最初の列になります。しかしあなたの Width
定義によって、その列は2番目の列のサイズの4分の1になります。
きみの SearchBox
あなたがそれに割り当てたスペースには単に収まりません。
この行からスター(*)を削除すると:
<ColumnDefinition Width="8*" />
...切り取られることなくフィットします。 (または、ユーザーコントロールを2番目の列に配置するか、メインウィンドウを展開するか、UserControlの幅を縮小することもできます)。
回答№2の場合は1
列と行の定義で星を使用する場合は、パーセントのように使用します。このような:
<Grid.ColumnDefinitions>
<ColumnDefinition Width=".1*" /> <!-- 10% -->
<ColumnDefinition Width=".9*" /> <!-- 90% -->
</Grid.ColumnDefinitions>
これはXAMLの読者があなたの使い方から解釈したものです:
<Grid.ColumnDefinitions>
<ColumnDefinition Width="8*" /> <!-- 800% -->
<ColumnDefinition Width="*" /> <!-- 100% -->
</Grid.ColumnDefinitions>
これは望ましくない結果をもたらすでしょう。