WPF 애플리케이션이 있습니다. 이 애플리케이션의 사용자가 각기 다르며 각 사용자마다 서로 다른 레벨이 있습니다. 높은 수준의 사람들은 일부 메뉴 항목에 액세스하지 못합니다.메뉴 항목 간 전환 WPF?
메뉴 항목을 전환하는 방법이 있습니까? 개별 메뉴 항목의 가시성을 효율적으로 전환하는 방법은 무엇입니까? 이 다른 방법이 있습니까?
WPF 애플리케이션이 있습니다. 이 애플리케이션의 사용자가 각기 다르며 각 사용자마다 서로 다른 레벨이 있습니다. 높은 수준의 사람들은 일부 메뉴 항목에 액세스하지 못합니다.메뉴 항목 간 전환 WPF?
메뉴 항목을 전환하는 방법이 있습니까? 개별 메뉴 항목의 가시성을 효율적으로 전환하는 방법은 무엇입니까? 이 다른 방법이 있습니까?
바인딩 및 변환기를 사용하여이 작업을 수행 할 수 있습니다. 기본적으로 사용 권한 수준을 지정하는 메뉴의 DataContext
속성 (메뉴 항목에 상속 됨)이있는 경우 메뉴 항목의 가시성에 바인딩 할 수 있습니다.
분명히 권한이 암시 적으로 Visibility
enum으로 변환 될 수 없으므로 IValueConverter
인터페이스의 구현을 만들어야합니다.이 인터페이스는 현재 사용 권한을 기반으로 권한을 가시성으로 변환하거나 그 반대로 변환해야합니다. 수평. 이것은 또한 현재 사용 권한 수준의 개념을 가진 변환기가 필요하므로 어느 정적 속성에 대한 액세스 권한을 부여하거나 (또는 권장하지 않음) 변환기 인스턴스를 확보해야합니다. 인스턴스 하나만 사용하고 현재 사용 권한 수준을이 인스턴스에 전달합니다.
예, Visibility
속성은 MenuItem
에서 작동합니다. 당신이 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
을 변경할 수 있습니다, 또는 재산에에 데이터 바인딩거야 귀하의 뷰 모델.
이렇게하는 방법에는 여러 가지가 있습니다. 가시성을 토글하는 것도 한 가지 방법이지만 다른 사람들이 코드를 읽을 수있게하려면 일종의 디자인 패턴을 구현하는 것이 좋습니다.
다음 MVVM 또는 MVC 패턴 중 하나를 제안합니다. 즉, 사용자마다 서로 다른보기를 만들어야합니다.
단순한 메뉴 항목처럼 UI의 해당 부분을 사용자 정의 컨트롤로 분리하고 해당 사용자 정의 컨트롤에서 다른 사용자에 대해 다른 XAML을 사용할 수 있습니다. 그런 다음 코드에서 어떤 사용자가 로그인했는지에 따라 올바른 XAML (보기)을 표시하십시오.