none
使用UserControl时如何对其中的属性进行数据绑定? RRS feed

  • 问题

  • 在MainPage.xaml中有如下代码(MyUserControl为新建的用户控件),后台代码中已绑定含Text属性的数据源集合:

    <GridView>
        <GridView.ItemTemplate>
            <DataTemplate>
                <local:MyUserControl1 MText="{Binding Text}"/>
            </DataTemplate>
        </GridView.ItemTemplate>
    </GridView>

    用户控件中的描述MText属性的代码:

    public string MText
    {
        get
        {
            return myText.Text;
        }
        set
        {
            myText.Text = value;
        }
    }

    但是调试时出现了"无法将类型为“Windows.UI.Xaml.Data.Binding”的对象强制转换为类型“System.String”。"(System.InvalidCastException)的异常。

    请问应该如何解决?

    2015年3月29日 9:28

答案

  • 所有能够支持绑定的属性都必须是依赖属性。在MyUserControl1 控件中把MTtext写成依赖属性就可以了。

    public string MText { get { return (string)GetValue(MTextProperty); } set { SetValue(MTextProperty, value); } } public static readonly DependencyProperty MTextProperty = DependencyProperty.Register("MText", typeof(string), typeof(MyUserControl1 ), new PropertyMetadata("", new PropertyChangedCallback(OnMTextPropertyChanged))); private static async void OnMTextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) {

    //这里是当MText值变化后触发的回调。可以使用也可以不使用。根据你的具体情况

    }




    2015年3月30日 2:21