我先自定义了一个UserControl,然后在别的窗口中使用它。
就比如这个UserControl是一个正方形里面放一个圆吧(预设大小为200×200),我的初始设定是让圆在正方形的中心,圆的直径是正方形边长的一半。
现在我要在窗口中引用这个UserControl,但是大小和当初设定的不一样,就比如是300×300吧,我想让UserControl的布局和比例不改变,就是说圆还在正方形的中心(别说用VerticalAlignment=“center”,那如果我不放在中心呢),直径还是正方形边长的一半。这样的话,怎么来设定圆的Height、Width和Margin值。
我找过教程,说是用依赖属性,可是这个没有详细的介绍,有谁知道怎么做吗?最好给个样例代码。

解决方案 »

  1.   


    把原始目标元素的属性绑定给目标元素,原始元素改变后,目标元素也改变,这个的FrameworkElement对象是WPF支持的控件
    /// <summary>
            /// 元素绑定
            /// </summary>
            /// <param name="eleSrc">原始元素</param>
            /// <param name="eleDes">目标元素</param>
            /// <res>
            private void Bind(FrameworkElement eleSrc, FrameworkElement eleDes)
            {
                Binding oBindWidth = new Binding();
                oBindWidth.Source = eleSrc;
                oBindWidth.Path = new PropertyPath(FrameworkElement.WidthProperty);
                oBindWidth.Mode = BindingMode.TwoWay;
                eleDes.SetBinding(FrameworkElement.WidthProperty, oBindWidth);            Binding oBindHgiht = new Binding();
                oBindHgiht.Source = eleSrc;
                oBindHgiht.Path = new PropertyPath(FrameworkElement.HeightProperty);
                oBindHgiht.Mode = BindingMode.TwoWay;
                eleDes.SetBinding(FrameworkElement.HeightProperty, oBindHgiht);
            }
      

  2.   

    用ViewBox
    <Viewbox Stretch="Uniform">
    <你的圆>
    </Viewbox>
      

  3.   

    <UserControl>
    <ViewBox Stretch="Uniform">
    <圆>
    </ViewBox>
    </UserControl>
      

  4.   

    不懂<ViewBox Stretch="Uniform"> <圆>