2017-01-13 51 views
1

Hello Stackoverflowers!在MainWindow中使用時裁剪的UserControl

我用XAML中的搜索欄創建了一個列表,當我試圖在MainWindow.xaml中使用我的新UserControl時,UserControl中的按鈕在設計器中裁剪而不是被調整大小以適合,爲什麼?

這裏是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

簡答:它不適合。

您的主窗口中有兩列。由於您沒有指定放置UserControl的列,所以它默認爲第一列。但是你的Width定義強制該列爲第二列大小的四分之一。您的SearchBox根本不適合您分配給它的空間。

如果您從該行的星號(*):

<ColumnDefinition Width="8*" /> 

...這將不適合被裁剪。 (或者,您可以將用戶控件放在第二列,或者展開主窗口,或者縮小您的UserControl的寬度。)

+0

哦對。所以,考慮到你們倆告訴我的情況,我將控制寬度減半,並修改了主窗口第一列相對於第二列的大小(30-70比率)。這比預期的要寬一些,但它會做到這一點。謝謝 – Csi

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> 

這將有意想不到的結果。

+0

哦,我不知道,很好 – Csi