我有ScatterViewItem
,其中包含UserControl
。我正在尝试将MinWidth
的{{1}}绑定到ScatterViewItem
。
UserControl
为什么将UC绑定到SVI是有效的而不是其他方式?如何将SVI的MinWidth绑定到UC呢?
答案 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);