zoukankan      html  css  js  c++  java
  • WPF访问UserControl的自定义属性和事件

    要实现外部窗体能直接访问UserControl的属性必须把UserControl的属性定义为依赖属性:

    一,在UserControl.cs中为TextBox控件的Text建立依赖属性,输入"propdp"双击TAB都自动生成依赖属性模板,然后修改属性名称为SelectedValue:

            /// <summary>
            /// 依赖属性
            /// arg1:属性名称
            /// arg2:属性类型
            /// arg3:属性拥有者的类型
            /// arg4:属性值被改变时的回调函数
            /// </summary>
            public static readonly DependencyProperty SelectedValueProperty =
                DependencyProperty.Register("SelectedValue", typeof(string), typeof(CbxTreeRole), new PropertyMetadata("TextBox", new PropertyChangedCallback(OnTextChanged)));
    
            //回调函数
            static void OnTextChanged(object sender, DependencyPropertyChangedEventArgs args)
            {
                CbxTreeRole source = (CbxTreeRole)sender;
                source.txtValue.Text = (string)args.NewValue;
            }
    
            //封装依赖属性
            public string SelectedValue
            {
                get
                {
                    return (string)GetValue(SelectedValueProperty);
                }
                set
                {
                    txtValue.Text = value;
                    SetValue(SelectedValueProperty, value);
                }
            }

    二、在调用窗体MainWindow.xaml中绑定该依赖属性

    <uc:CbxTreeRole  Grid.Row="3" Grid.Column="1" Width="400" SelectedValue="{Binding Path=RoleName}" />

    同理,要访问UserControl事件,必须把UserControl事件定义为路由事件,向上冒泡,以便外部窗体可以处理。

  • 相关阅读:
    洛谷 P1591 阶乘数码
    洛谷 P2008 大朋友的数字
    洛谷 P1716 双调序列
    洛谷 P2309 loidc,卖卖萌
    洛谷 P1324 矩形分割
    洛谷 P2690 接苹果
    洛谷 P1239 计数器
    hdu_4352_XHXJ's LIS(数位DP+状态压缩)
    hdu_5648_DZY Loves Math
    hdu_5179_beautiful number(数位DP)
  • 原文地址:https://www.cnblogs.com/kavilee/p/6626657.html
Copyright © 2011-2022 走看看