WPF控件属性有关问题:Height和width,margin
WPF控件属性问题:Height和width,margin
我先自定义了一个UserControl,然后在别的窗口中使用它。
就比如这个UserControl是一个正方形里面放一个圆吧(预设大小为200×200),我的初始设定是让圆在正方形的中心,圆的直径是正方形边长的一半。
现在我要在窗口中引用这个UserControl,但是大小和当初设定的不一样,就比如是300×300吧,我想让UserControl的布局和比例不改变,就是说圆还在正方形的中心(别说用VerticalAlignment=“center”,那如果我不放在中心呢),直径还是正方形边长的一半。这样的话,怎么来设定圆的Height、Width和Margin值。
我找过教程,说是用依赖属性,可是这个没有详细的介绍,有谁知道怎么做吗?最好给个样例代码。
------解决方案--------------------
------解决方案--------------------
我先自定义了一个UserControl,然后在别的窗口中使用它。
就比如这个UserControl是一个正方形里面放一个圆吧(预设大小为200×200),我的初始设定是让圆在正方形的中心,圆的直径是正方形边长的一半。
现在我要在窗口中引用这个UserControl,但是大小和当初设定的不一样,就比如是300×300吧,我想让UserControl的布局和比例不改变,就是说圆还在正方形的中心(别说用VerticalAlignment=“center”,那如果我不放在中心呢),直径还是正方形边长的一半。这样的话,怎么来设定圆的Height、Width和Margin值。
我找过教程,说是用依赖属性,可是这个没有详细的介绍,有谁知道怎么做吗?最好给个样例代码。
------解决方案--------------------
把原始目标元素的属性绑定给目标元素,原始元素改变后,目标元素也改变,这个的FrameworkElement对象是WPF支持的控件
/// <summary>
/// 元素绑定
/// </summary>
/// <param name="eleSrc">原始元素</param>
/// <param name="eleDes">目标元素</param>
/// <remarks>
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);
}
------解决方案--------------------
<UserControl>
<ViewBox Stretch="Uniform">
<圆>
</ViewBox>
</UserControl>