WPF實戰案例-數據代理


在我們wpf開發中,很多人會有mvvm模式去做wpf的項目。

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

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

這里有個方案:

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。

下面是用法:

很簡單的方式。但是這個的使用場景還是比較多的,在很多綁定操作的時候,因為層級的關系有時候不一定能找到需要的對象,通過這個代理做一個轉接的作用。

 有對WPF感興趣的同學,可以加頁面下方的qq群,我們一起共同進步!


免責聲明!

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



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