根据里面的控件设置usercontrol的大小

Set usercontrol size According to the Controls inside it

您好,我想根据其中的控件设置用户控件大小,我该怎么做? 很久以前我用过 propretis SizeToContent ,但现在找不到了

@zahra_rajabi,一般设置width和height属性为"Auto"会自动根据内容设置容器的宽高。

将用户控件中的主容器(宽度、高度)设置为自动以实现 SizeToContent。

* **记住: DesignWidth 和 DesignHeight 仅在设计时有用

'这里可以使用layouttransform或者rendertransform

抱歉我的英语不好..

例如:

<UserControl 
    x:Class="Setup.WPF.Gauges.SwitchOff_On_View"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:cal="http://www.caliburnproject.org"
    xmlns:ikriv="clr-namespace:Setup.WPF.Converters"
    mc:Ignorable="d" d:DesignHeight="150" d:DesignWidth="70"
    x:Name="usercontrol" Height="150" Width="70" RenderTransformOrigin="0.5,0.5"
    VerticalAlignment = "Top" HorizontalAlignment = "Left" Focusable="False" ClipToBounds="True" ToolTip="{Binding ToolTip}"
    cal:Message.Attach="[Event MouseEnter] = [Action MouseEnter($eventArgs)]">

    <UserControl.LayoutTransform>
        <TransformGroup>
            <RotateTransform x:Name="rotation" Angle="{Binding angle}"/>
            <ScaleTransform x:Name="scale" ScaleX="{Binding scaleX}" ScaleY="{Binding ElementName=scale, Path=ScaleX}"/>
        </TransformGroup>
    </UserControl.LayoutTransform>

    <Grid>  
        :
        :
        :
    </Grid>
</UserControl>

值 RenderTransformOrigin="0.5,0.5 很重要,因为你通知你的中心在哪里。

首先你必须计算比例因子,

例如,如果您希望大小(宽度)= 100 像素(启动时的宽度),您可以根据已知元素的宽度大小、图像或用户控件的宽度值计算 ScaleX

ScaleX = 尺寸/sizeelement

您在 ScaleTranform 中绑定 Scale(不需要旋转变换)

您可以在 C#(代码隐藏)中做到这一点。

问候