Установите размер usercontrol в соответствии с элементами управления внутри него - PullRequest
0 голосов
/ 12 сентября 2018

привет, я хочу установить размер usercontrol в соответствии с элементами управления внутри него, как я могу это сделать? Давным-давно я использовал propretis SizeToContent, но сейчас не могу его найти

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

'Здесь вы можете использовать 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 = Size / sizeelement

Вы связываете Scale в ScaleTranform (rotatetransform не требуется)

вы можете сделать это в C # (код сзади), так что

regards

0 голосов
/ 12 сентября 2018

@ zahra_rajabi, Как правило, установка для свойств ширины и высоты значения "Авто" автоматически устанавливает ширину и высоту контейнера в соответствии с его содержимым.

Установите для основного контейнера (ширина, высота) в Usercontrol значение Auto для достижения SizeToContent.

* ** Помните: DesignWidth и DesignHeight полезны только во время разработки

...