设置usercontrol大小根据其中的控件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设置usercontrol大小根据其中的控件相关的知识,希望对你有一定的参考价值。

嗨我想要设置usercontrol大小根据里面的控件我怎么能这样做?很久以前我用过propretis SizeToContent,但我现在找不到它

答案

@zahra_rajabi,通常将宽度和高度属性设置为“自动”将根据其内容自动设置容器的宽度和高度。

将Usercontrol中的主容器(宽度,高度)设置为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 =尺寸/尺寸元素

在ScaleTranform中绑定Scale(不需要rotatetransform)

你可以在C#(代码隐藏)这样做。

问候

以上是关于设置usercontrol大小根据其中的控件的主要内容,如果未能解决你的问题,请参考以下文章

UWP UserControl 不会自适应大小

创建委托以更改 UserControl 大小

根据TreeView结构中的哪个节点调用特定的UserControl

从UserControl访问Window的DataContext

如何在 XAML 代码中创建支持其中其他元素的 UserControl

带有Image属性的WPF UserControl