代码绑定

时间:2014-08-12 11:04:16

标签: c# wpf

我有ScatterViewItem,其中包含UserControl。我正在尝试将MinWidth的{​​{1}}绑定到ScatterViewItem

UserControl

为什么将UC绑定到SVI是有效的而不是其他方式?如何将SVI的MinWidth绑定到UC呢?

2 个答案:

答案 0 :(得分:1)

SetBinding方法有2个重载(源:http://msdn.microsoft.com/en-us/library/ms598270(v=vs.110).aspx):

  

SetBinding(DependencyProperty,String)
  SetBinding(DependencyProperty,BindingBase)

使用ToString()尝试实现的功能不起作用,因为ToString()将(Min)Width和(Min)Heights属性的值转换为字符串(例如500.0 =>& #34; 500.0&#34)。接受字符串作为第二个参数的SetBinding重载要求该字符串是属性名称或属性的路径。

<击> 您可能想要的是&#34; MinWidth&#34;,&#34; Width&#34;,&#34; MinHeight&#34;或&#34;高度&#34;:

myUserControl.SetBinding(UserControl.WidthProperty, "Width");
myUserControl.SetBinding(UserControl.HeightProperty, "Height");

svi.SetBinding(ScatterViewItem.MinWidthProperty, "MinWidth");
svi.SetBinding(ScatterViewItem.MinHeightProperty, "MinHeight");

<击>

编辑:这是正确的版本,使用其他重载,因为上一段代码不知道在哪里可以找到指定的属性。

Binding widthBinding = new Binding("Width");
widthBinding.Source = myUserControl;
svi.SetBinding(ScatterViewItem.MinWidthProperty, widthBinding);

Binding heightBinding = new Binding("Height");
heightBinding.Source = myUserControl;
svi.SetBinding(ScatterViewItem.MinHeightProperty, heightBinding);

答案 1 :(得分:1)

要将ScatterViewItem的MinWidth绑定到usercontrol的MinWidth,您需要创建一个绑定,其源设置为usercontrol,路径设置为“MinWidth”。然后使用SetBinding将此绑定分配给ScatterViewItem。

// Create Binding
Binding b = new Binding("MinWidth");
b.Source = myUserControl;
// Assign Binding to ScatterViewItem
svi.SetBinding(ScatterViewItem.MinWidthProperty, b);