WPF實戰案例-數據代理

在咱們wpf開發中,不少人會有mvvm模式去作wpf的項目。mvvm

是否有人遇到這樣一個場景:在一個界面上,有個tabcontrol上面有4個頁籤,每一個頁籤裏面都有一個datagrid,裏面顯示的列基本同樣,綁定的數據集合都是同一個,可是有個差別,在第二個頁簽上須要第二列不顯示,第三個頁籤只顯示一個列。ide

咱們若是用的是mvvm,這個時候就會去使用數據綁定,問題在於咱們怎麼讓datagrid的下一級也就是DataGridTextColumn識別到vm,或者怎麼在模板列中識別vm,能夠綁定咱們在vm中聲明的顯示隱藏屬性。spa

這裏有個方案:代理

public class BindingProxy : Freezable
    {
        protected override Freezable CreateInstanceCore()
        {
            throw new NotImplementedException();
        }

        public object Data
        {
            get { return (object)GetValue(DataProperty); }
            set { SetValue(DataProperty, value); }
        }

        // Using a DependencyProperty as the backing store for Data.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty DataProperty =
            DependencyProperty.Register("Data", typeof(object), typeof(BindingProxy), new UIPropertyMetadata(null));
    }

很簡單的方式,定義一個空對象用來轉接vm,將vm存入Data。code

下面是用法:對象

很簡單的方式。可是這個的使用場景仍是比較多的,在不少綁定操做的時候,由於層級的關係有時候不必定能找到須要的對象,經過這個代理作一個轉接的做用。blog

 有對WPF感興趣的同窗,能夠加頁面下方的qq羣,咱們一塊兒共同進步!開發

相關文章
相關標籤/搜索