Как создать ссылку на объект на странице xaml из кода App.xaml.cs? - PullRequest
0 голосов
/ 24 декабря 2010

У меня есть бизнес-проект Silverlight 4, в котором я включил информацию о роли проверки подлинности / авторизации ASP.NET.Я хотел бы передать информацию об учетной записи текущего аутентифицированного пользователя из кодового файла app.xaml.cs на другую страницу XAML, но я не знаю, как это сделать, или если это вообще возможно.

Моя цель -для привязки данных к свойству IsEnabled различных кнопок моей целевой XAML-страницы в зависимости от того, находится ли текущий пользователь в определенной роли, связанной с администратором, или нет.Обработчик события Application_UserLoaded в файле app.xaml.cs представляется наиболее безопасным обработчиком событий для запуска этой задачи, поскольку он запускается только после загрузки данных учетной записи пользователя с сервера.

Ранее я пытался получить текущийпользовательскую информацию прямо со своей целевой XAML-страницы, но я никогда не получал информацию о текущем пользователе, потому что Application_UserLoaded еще не завершил загрузку информации о текущем пользователе.

public partial class App : Application
{
      private void Application_UserLoaded(LoadUserOperation operation)
      {
        // How do you create an object reference to a XAML page from your project solution
        // from this event handler?
      }
}

Заранее спасибо за любую помощь, Джон

Ответы [ 2 ]

1 голос
/ 24 декабря 2010

Вам не нужна ссылка на ваш взгляд для выполнения этой задачи. Есть лучшее решение. Сначала создайте класс для контекста приложения с помощью свойства IsAdmin и добавьте его в словарь ресурсов приложения

 private void Application_Startup(object sender, StartupEventArgs e)
 {
     this.Resources.Add("GlobalContext", new GlobalContext());
 }

Установите свойство IsAdmin в вашем обработчике Application_UserLoaded и привяжите его к любому из ваших представлений

<Button IsEnabled="{Binding IsAdmin, Source={StaticResource GlobalContext}}"

Приветствие.

0 голосов
/ 04 января 2011

После некоторых проб и ошибок я решил исходную проблему, подняв пользовательский обработчик событий в обработчике Application_UserLoaded () файла app.xaml.cs.

Затем я подписался на этот пользовательский обработчик событий из кода кодамоей конкретной страницы просмотра XAML, где мне нужно было связать данные со свойством IsEnabled моих различных элементов управления Silverlight.

Причина, по которой мне пришлось создавать собственный обработчик событий, заключается в том, что вы не можете предполагать, что информация о роли безопасности всегда будет готовадля ссылки в обработчике событий Loaded () вашей страницы просмотра XAML.

Я нашел больше информации об этой специфической проблеме времени в: http://forums.silverlight.net/forums/p/146631/328217.aspx

ура, Джон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...