MVVM框架下 WPF隱藏DataGrid一列

2021-08-22 14:57:02 字數 1633 閱讀 2675

最近的乙個專案,需要在部分使用者登入的時候,隱藏datagrid中的一列,但是常規的繫結不好使,在下面舉個例子。

xaml部分**

viewmodel部分**

using galasoft.mvvmlight.command;

using system;

using system.collections.generic;

using system.componentmodel;

using system.linq;

using system.text;

using system.threading.tasks;

using system.windows;

namespace datagridcolumn

public event propertychangedeventhandler propertychanged;

private void inotifypropertychanged(string name)

}private visibility isvisibility;

public visibility isvisibility

set}

private relaycommand button1command;

public relaycommand button1command);}

}private relaycommand button2command;

public relaycommand button2command);}}}}

顯示效果如下

出現問題的原因是,datagridtextcolumn不屬於visual tree

解決方案有兩種:

一、採用**(**一)

1、新增乙個frameworkelement的**

2、用乙個不可見的contentcontrol繫結上一步的frameworkelement**

3、用**做為visibility的資料來源

二、使用freezable(**二)

根據msdn裡freezable的相關文件,在remarks下有這樣的一句話

大意就是和其他的dependencyobject相比,在子屬性值更改時, freezable 物件提供更改通知。個人認為應該是由於freezable有這個特點,所以才能被用在這裡。

**如下

bindingproxy類

xaml引用bindingproxy

visibility繫結

效果如下,列二用的是方法一,列三用的是方法二

作為新手,只能理解如此,希望有大神可以給好好的講解一下,謝謝。

WPF學習分享 一 DataGrid

最近由於想做乙個windows的桌面應用程式,正好最近看了一下c 在網上找了一下關於windwos桌面應用的相關檔案,最後選擇使用wpf來開發。使用datagrid用到的功能 datagrid通過使用資料繫結,實現資料的雙向通知。在datagrid的datagridcomboboxcolumn使用列...

pytorch框架下語義分割訓練實踐(一)

目錄 環境準備 開始訓練 torch 1.1.0 torchvision 0.3.0 tqdm 4.32.2 tensorboard 1.14.0 pillow 6.2.0 opencv python 4.1.0.25 這裡面幾個只有torch比較大,其他都很小,很快就裝完,安裝庫前務必裝下pip,...

MVVM模式解析和在WPF中的實現(一)

一 mvvm是model view viewmodel的簡寫,這種模式的引入就是使用viewmodel來降低view和model的耦合,說是降低view和model的耦合。也可以說是是降低介面和邏輯的耦合,理想情況下介面和邏輯是完全分離的,單方面更改介面時不需要對邏輯 改動,同樣的邏輯 更改時也不需...