c# - 如何将 WPF 用户控件的宽度拉伸(stretch)到其窗口?

标签 c# .net wpf xaml wpf-controls

我有一个带有用户控件的窗口,我想让用户控件的宽度等于窗口宽度。如何做到这一点?

用户控件是一个水平菜单,包含一个三列网格:

<ColumnDefinition Name="LeftSideMenu" Width="433"/>
<ColumnDefinition Name="Middle" Width="*"/>
<ColumnDefinition Name="RightSideMenu" Width="90"/>

这就是我想要窗口宽度的原因,将用户控件拉伸(stretch)到 100% 宽度,第二列相对。

编辑:

我用的是网格,有Window的代码:

<Window x:Class="TCI.Indexer.UI.Operacao"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:tci="clr-namespace:TCI.Indexer.UI.Controles"
    Title=" " MinHeight="550" MinWidth="675" Loaded="Load" ResizeMode="NoResize" WindowStyle="None" WindowStartupLocation="CenterScreen" WindowState="Maximized" Focusable="True"
    x:Name="windowOperacao">
    <Canvas x:Name="canv">
        <Grid>
            <tci:Status x:Name="ucStatus"/> <!-- the control which I want to stretch in width -->
        </Grid>
    </Canvas>
</Window>

最佳答案

您需要确保您的用户控件没有在用户控件的 xaml 文件中设置它的宽度。只需从中删除 Width="..."即可!

编辑:这是我测试过的代码:

SOUserAnswerTest.xaml:

<UserControl x:Class="WpfApplication1.SOAnswerTest"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="300">
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Name="LeftSideMenu" Width="100"/>
            <ColumnDefinition Name="Middle" Width="*"/>
            <ColumnDefinition Name="RightSideMenu" Width="90"/>
        </Grid.ColumnDefinitions>
        <TextBlock Grid.Column="0">a</TextBlock>
        <TextBlock Grid.Column="1">b</TextBlock>
        <TextBlock Grid.Column="2">c</TextBlock>
    </Grid>
</UserControl>

Window1.xaml:

<Window x:Class="WpfApplication1.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="clr-namespace:WpfApplication1"
    Title="Window1" Height="300" Width="415">
    <Grid>

        <local:SOAnswerTest Grid.Column="0" Grid.Row="5" Grid.ColumnSpan="2"/>
    </Grid>
</Window>

关于c# - 如何将 WPF 用户控件的宽度拉伸(stretch)到其窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/462390/

相关文章:

c# - 向右移动数组元素?

c++ - Createfile2、ReadFile 和 WriteFile;为什么 ReadFile 不读取我在 WriteFile 中写的内容?

wpf - 使用存储库模式时我们是否需要重新创建模型类

wpf - 问题排序数据网格

c# - 使用 ObservableCollection 进行动态数据显示

c# - datagridview鼠标悬停事件如何判断你在哪一列

c# - 在 UWP 中更新绑定(bind)的项目源后如何更新 GridView?

c# - 从 Windows 服务调用 WCF 服务时出现证书错误

.net - 如果我调用 DbContext.Dispose 而不调用 DbContext.SaveChanges 会怎样?

c# - 如何编写 SQL 交叉联接的 Linq 表达式?