GUI 용 권한 프레임 워크를 작성 중입니다. 사용자는 유효한 자격 증명으로 로그인하고 사용자가 액세스 할 수있는 메뉴 옵션 (버튼)이 제공됩니다.프로그래밍 방식으로 버튼 객체 매개 변수 참조하기
사용자에게 할당 된 권한에 따라 버튼 공개 여부를 표시하거나 숨길 계획입니다.
프로그래밍 방식으로 버튼 가시성을 참조하고 전환하는 가장 좋은 방법을 생각하는 데 어려움을 겪고 있습니다. 어떤 메뉴 항목을 표시해야하는지에 대해 자세히 설명하는 목록이 있지만 양식의 단추에 대해 해당 목록을 참조하는 방법을 알지 못합니다.
각 버튼 객체의 이름을 쉽게 입력하고 목록에 대해 테스트하고 버튼의 가시성을 전환 할 수는 있지만 이는 나에게별로 효율적이지 않습니다.
아래 코드. 버튼 항목을 활성화/비활성화하는 가장 좋은 방법은 무엇입니까?
class Menu
{
public int Id { get; set; }
public string MenuItemFriendlyName { get; set; }
public string ButtonName { get; set; }
public bool Visable { get; set; }
public List<Menu> CalculateMenuAccessForUser(User userDetails)
{
var menuItems = AllMenuItemsInSystem();
foreach (var pt in userDetails.PermissionTable)
{
if(pt.Type != "Menu")
break;
if (menuItems.Exists(x => x.Id.Equals(pt.Id)))
{
var index = menuItems.FindIndex(y => y.Id.Equals(pt.Id));
menuItems[index].Visable = true;
}
}
return menuItems;
}
private List<Menu> AllMenuItemsInSystem()
{
var menu = new List<Menu>();
using (var sqlconnection = new SqlConnection(Globals.AFWideSettings.SqlConnectionString))
{
sqlconnection.Open();
using (
var sqlcommand =
new SqlCommand("select name, permissionid from PermissionListTable where type = 'Menu'",
sqlconnection))
{
var resultReader = sqlcommand.ExecuteReader();
while (resultReader.Read())
{
menu.Add(new Menu(){MenuItemFriendlyName = resultReader.GetString(0), Id = resultReader.GetInt32(1), Visable = false});
}
}
}
return menu;
}
}
class Another{
void BuildOutlookMenu()
{
var buildMenu = new Authentication.Menu();
var menuBuilder = buildMenu.CalculateMenuAccessForUser(_userDetails);
foreach (var menu in menuBuilder)
{
if (menu.Visable)
{
//Here I wish to enable or disable my menu buttons
//BUTTON.Visibility = Visibility.Visible;
}
}
}
}
이 포스팅은 아마 어떤 컨테이너 당신이 버튼을 추가하는 코드 검토 – MethodMan
더 적합? 'Visibility' 로직을 처리하기 위해'Button'을 기반으로하는'Menu' 객체를위한'DataTemplate'을 만들 수 있습니다. –