当前位置:  开发笔记 > 开发工具 > 正文

Silverlight:将子控件属性绑定到用户控件中的属性

如何解决《Silverlight:将子控件属性绑定到用户控件中的属性》经验,为你挑选了1个好方法。

如果我定义了用户控件:

public partial class MainFooter : UserControl
{
    public System.Windows.Media.Color BkColor;
}

它是xaml:


    
        
            
                
                    
                    
                
            
        
    

和使用:



我如何将Rectangle中的GradientStop Color绑定到它的用户控件BkColor属性的值?



1> Simon_Weaver..:

通常当我看到这个问题提出答案是'你必须在代码中做',这听起来像'Silverlight绑定不支持这个' - 所以你必须通过设置' 完全手动 ' 来做到这一点手工财产.但事实并非如此:

Silverlight绑定确实支持这一点 - 它只是Silverlight XAML不支持.

这是一个UserControl基本上包装的例子DataForm.在构造函数中,您运行可绑定到"用户控件属性"的绑定.希望如果他们将来更改XAML对此的支持,那么返回并修复它将是微不足道的.

App.xaml中


AddressControl.xaml


    

可选:表示您已将代码中的值与注释绑定在一起

AddressControl.xaml.cs

publicAddressControl()
{
    InitializeComponent();

    // bind the HeaderProperty of 'dfAddress' to the 'MyHeader' dependency
    // property defined in this file
    dfAddress.SetBinding(DataForm.HeaderProperty, 
    new System.Windows.Data.Binding { Source = this, 
                                      Path = new PropertyPath("MyHeader") });
}

// standard string dependency property
public string MyHeader
{
    get { return (string)GetValue(MyHeaderProperty); }
    set { SetValue(MyHeaderProperty, value); }
}

public static readonly DependencyProperty MyHeaderProperty = 
       DependencyProperty.Register("MyHeader", typeof(string), 
       typeof(AddressControl), null);

这会将MyHeader我的AddressControlusercontrol上的Header属性绑定到dataform上的属性.我将它设为"我的"仅仅是为了便于阅读 - 但我实际上在实际代码中只使用了"标题".

真正的耻辱我们仍然不能在XAML中做到这一点,但它比我最初尝试捕获DataContextChanged事件然后手动设置的东西更好.

推荐阅读
kikokikolove
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有