Tôi đang xây dựng một ứng dụng có thể được nhiều người dùng sử dụng. Mỗi người dùng được phân loại theo một trong các cấp Xác thực tiếp theo:Sử dụng enum trong ConverterParameter
public enum AuthenticationEnum
{
User,
Technitian,
Administrator,
Developer
}
Một số điều khiển (như nút) chỉ được hiển thị cho một số người dùng nhất định. tôi có một tài sản chứa mức độ xác thực của người sử dụng hiện tại:
public AuthenticationEnum CurrentAuthenticationLevel { get; set; }
Tôi muốn để ràng buộc khách sạn này đến tài sản 'visibilty' của một số kiểm soát và thông qua một tham số cho phương thức chuyển đổi, nói với nó là gì mức xác thực thấp nhất có thể thấy điều khiển. Ví dụ:
<Button Visibility="{Binding Path=CurrentAuthenticationLevel, Converter={StaticResource AuthenticationToVisibility}, ConverterParameter="Administrator"}"/>
có nghĩa là chỉ 'Quản trị viên' và 'Nhà phát triển' mới có thể thấy nút. Thật không may, mã trên vượt qua "Quản trị viên" dưới dạng chuỗi. Tất nhiên tôi có thể sử dụng Switch-Case bên trong phương thức chuyển đổi và chuyển đổi chuỗi thành AuthenticationEnum. Nhưng điều này là xấu và dễ bị lỗi bảo trì (mỗi lần enum thay đổi - phương pháp chuyển đổi nên thay đổi).
Có cách nào tốt hơn để truyền đối tượng không tầm thường dưới dạng tham số không?
bạn không cần phải chuyển 'ConversionParameter' thành chuỗi –
Đặt câu trả lời của Fredrik là đã trả lời. –
Xem phần này để biết các định dạng khác và các chi tiết khác - https://stackoverflow.com/questions/359699/passing-an-enum-value-as-command-parameter-from-xaml – akjoshi