首页 > 解决方案 > 拖动后如何根据这个控件的值自动设置UserControl的高度和宽度?

问题描述

我创建UserControl并在工具箱中拥有它。当我将控件拖到主窗口上时,高度和宽度属性设置为 100,而不是控件的属性(例如 70x50)。我能改变它吗?

我的控制:

<local:Control x:Class="Controls.Sensor"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:Controls"
         mc:Ignorable="d" 
         d:DesignHeight="70" d:DesignWidth="50"
         x:Name="control">
<Grid >
    <Ellipse Fill="Transparent" Opacity="0.5" Grid.Row="1">
        <Ellipse.Triggers>
            <EventTrigger RoutedEvent="Binding.TargetUpdated" >
                <EventTrigger.Actions>
                    <BeginStoryboard>
                        <Storyboard Duration="0:0:1" RepeatBehavior="Forever">
                            <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="Fill.(SolidColorBrush.Color)">
                                <DiscreteColorKeyFrame KeyTime="0:0:0" Value="{Binding FirstColor, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True}" />
                                <DiscreteColorKeyFrame KeyTime="0:0:0.5" Value="{Binding SecondColor, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True}" />
                            </ColorAnimationUsingKeyFrames>
                        </Storyboard>
                    </BeginStoryboard>
                </EventTrigger.Actions>
            </EventTrigger>
        </Ellipse.Triggers>
    </Ellipse>
</Grid>
</local:Control>

并在拖动后:

<Controls:Sensor HorizontalAlignment="Left" Height="100" Margin="728,524,0,0" VerticalAlignment="Top" Width="100"/>

当我预期:

<Controls:Sensor HorizontalAlignment="Left" Height="70" Margin="728,524,0,0" VerticalAlignment="Top" Width="50"/>

标签: c#wpfxaml

解决方案


Visual Studio 中的这个非常烦人的错误已经在过去被报告过。Visual Studio 开发团队不打算修复它。

请参阅以下帖子:WPF UserControl 高度始终设置为 100


推荐阅读