0

我试图实现具有预定义大小(宽度和高度)的控件或用户控件。

我有一个定义大小的枚举:

public enum ControlSizes
{
    // Width x Height
    ControlSizeA, // 310 x 220
    ControlSizeB, // 310 x 450
    ControlSizeC // 310 x 680
}

然后在我的控制中,我定义了一个 DependencyProperty 和一个回调方法来允许 Size 规范:

    public static readonly DependencyProperty ControlSizeProperty = DependencyProperty.Register
        ("ControlSize", 
        typeof(ControlSizes), 
        typeof(CustomControl), 
        new PropertyMetadata(ControlSizes.ControlSizeA, OnControlSizePropertyChanged));

public ControlSizes ControlSize
{
    get { return (ControlSize)GetValue(ControlSizeProperty); }
    set { SetValue(ControlSizeProperty, value); }
}

private static void OnControlSizePropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
    CustomControl customControl = source as CustomControl;
    Size controlSize = ControlSizeConverter.ConvertToSize(customControl.ControlSize);
    customControl.Width = controlSize.Width;
    customControl.Height = controlSize.Height;
}

主要思想是具有预定义的尺寸,并且在设计时能够选择一种尺寸,并以该可用尺寸放置控件。

问题是没有正确保存或分配宽度和高度。

有任何想法吗?

提前致谢。

4

1 回答 1

0

假设ControlSizeConverter.ConvertToSize获取一个ControlSizes对象并返回 a Size,并且您希望CustomControl在 DP 更改时调整它的大小ControlSize,我认为您的回调应该如下所示:

private static void OnControlSizePropertyChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
    CustomControl customControl = source as CustomControl;
    Size controlSize = ControlSizeConverter.ConvertToSize(ControlSize);
    customControl.Width = controlSize.Width;
    customControl.Height = controlSize.Height;
}
于 2013-10-22T20:16:54.220 回答