我有一個WPF應用程序。我有這個應用程序的不同用戶,每個用戶都有不同的關卡。更高級別的人不能訪問一些菜單項。在菜單項WPF之間切換?
有沒有辦法在菜單項之間切換?切換單個菜單項的可見性是完成此操作的有效方法嗎?有沒有其他辦法呢?
我有一個WPF應用程序。我有這個應用程序的不同用戶,每個用戶都有不同的關卡。更高級別的人不能訪問一些菜單項。在菜單項WPF之間切換?
有沒有辦法在菜單項之間切換?切換單個菜單項的可見性是完成此操作的有效方法嗎?有沒有其他辦法呢?
你可以使用綁定和轉換器來實現這一點。基本上,如果您在菜單的DataContext
上有一個屬性(將由菜單項繼承),該屬性指定權限級別;那麼你可以將它綁定到菜單項的可見性。
很明顯,這是因爲權限不會隱式轉換爲Visibility
枚舉,你就必須創建IValueConverter
接口,這將是具體到轉換的權限能見度的實現,反之亦然,基於當前的權限水平。這也需要轉換器具有當前權限級別的一些概念,所以要麼讓它訪問一些靜態屬性(我不建議這樣做),要麼需要獲取轉換器實例(確保您只使用一個實例)並將當前權限級別傳遞給它。
是的,Visibility
屬性適用於MenuItem
s。如果下面的代碼粘貼到Kaxaml,你會看到編輯菜單是隱藏的,所以是工具>項目2
<Menu>
<MenuItem Header="_File"/>
<MenuItem Header="_Edit" Visibility="Collapsed"/>
<MenuItem Header="_Tools">
<MenuItem Header="Item 1"/>
<MenuItem Header="Item 2" Visibility="Collapsed"/>
<MenuItem Header="Item 3"/>
</MenuItem>
</Menu>
您還可以更改Visibility
編程,或將其數據綁定到一個屬性你的viewmodel。
有幾種不同的方法可以做到這一點。切換可見性是一種方式,但如果您希望您的代碼對其他人可讀,我會建議實施某種設計模式。
我會建議遵循MVVM或MVC模式。這意味着你需要爲不同的用戶創建不同的視圖。
至於菜單項等簡單的東西,您可以將用戶控件的部分UI分離到用戶控件中,並在該用戶控件中爲不同的用戶使用不同的XAML。然後在代碼中,根據哪個用戶登錄顯示正確的XAML(查看)。