Wpf 用户控件在主窗口中使用时被裁剪

Wpf 用户控件在主窗口中使用时被裁剪,wpf,xaml,Wpf,Xaml,你好,飞越者 我正在用XAML创建一个带有搜索栏的列表,当我试图在MainWindow.XAML中使用我的新UserControl时,UserControl中的按钮在设计器中被裁剪,而不是调整大小以适应,这是为什么 以下是MainWindow.xaml主体: <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="2*"/> <ColumnDefinitio

你好,飞越者

我正在用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>


老实说,我真的不知道为什么我的控制权被切断了。有潜在客户吗?

在列和行定义中使用星号时,请像使用百分比一样使用它们。像这样:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width=".1*" /> <!-- 10% -->
    <ColumnDefinition Width=".9*" /> <!-- 90% -->
</Grid.ColumnDefinitions>

这是XAML阅读器根据您的使用情况解释的:

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="8*" /> <!-- 800% -->
    <ColumnDefinition Width="*" /> <!-- 100% -->
</Grid.ColumnDefinitions>


这将产生不期望的结果。

简单回答:它不合适

主窗口中有两列。由于您尚未指定放置UserControl的列,因此它默认为第一列。但是您的
Width
定义强制该列的大小为第二列的四分之一

您的
搜索框
根本不适合您分配给它的空间

如果从此行中删除星号(*):

    <ColumnDefinition Width="8*" />


…它不需要裁剪就可以合身。(或者,您可以将用户控件放在第二列,或者展开主窗口,或者缩小用户控件的宽度。)

哦,我不知道,哦,对了。所以,考虑到你们都告诉我的,我将控件宽度减少了一半,并修改了主窗口第一列相对于第二列的大小(30-70的比例)。它比预期的宽一点,但它会成功的。非常感谢。