/ / UserControlがMainWindowで使用されたときに切り取られる - wpf、xaml

MainWindowで使用するとUserControlが切り取られる - wpf、xaml

こんにちは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>

これは望ましくない結果をもたらすでしょう。