嗨,我想根据其中的控件设置usercontrol的大小,我该怎么做? 很久以前,我使用了专有的SizeToContent,但现在找不到它
答案 0 :(得分:3)
@zahra_rajabi,通常将width和height属性设置为“ Auto”将根据其内容自动设置容器的宽度和高度。
在用户控件中将主容器(宽度,高度)设置为“自动”以实现SizeToContent。
* **请记住: DesignWidth和DesignHeight仅在设计时有用
答案 1 :(得分:2)
'在这里,您可以使用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 =大小/大小元素
您将Scale绑定到ScaleTranform中(不需要rotatetransform)
您可以使用C#(在后面的代码)这样做。
致谢