【问题标题】:Set usercontrol size According to the Controls inside it根据里面的Controls设置usercontrol大小
【发布时间】:2019-02-16 19:46:06
【问题描述】:

嗨,我想根据里面的控件设置用户控件大小,我该怎么做? 很久以前我使用了propretis SizeToContent ,但我现在找不到它

【问题讨论】:

  • SizeToContentWindow 属性。您的控件应该已经具有正确的大小,但没有 xaml 我们只能猜测。

标签: wpf user-controls sizetocontent


【解决方案1】:

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

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

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

【讨论】:

    【解决方案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 = 尺寸/尺寸元素

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

    你可以在 C# 中做到这一点(代码隐藏)所以 .

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多