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事件定義為路由事件,向上冒泡,以便外部窗體可以處理。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM