Как приложение WPF знает, с чего начать? - PullRequest
3 голосов
/ 22 апреля 2011

Я совершенно новый для всего C # / WPF.У меня есть приличное понимание концепции расслоения WPF, и это очень хороший инструмент.Однако я сталкиваюсь с тем, что VS и тому подобное пытаются максимально упростить работу с базовым кодом.

При запуске совершенно нового приложения WPF в VS C # Express 2008 появляетсядва сразу видимых исходных файла: App.xaml и Window1.xaml.Это все прекрасно и прекрасно, но единственное место, где я вижу какое-либо значение того, с чего все начинается, - это строка в App.xaml, которая говорит:

<Application x:Class="SomeName.App"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  StartupUri="Window1.xaml">

Глядя на имя класса SomeName.App, япредположение, что расширение Application означает, что это то, с чего начать, но как приложение на самом деле узнает об этом?

Я хорошо знаком с Java, поэтому, если это упрощает объяснение таким образом, пожалуйста, сделайте это.Мне нравится понимать вещи на самом низком возможном уровне (не вдаваясь в машинный код), поэтому, пожалуйста, помогите мне немного глубже понять внутреннюю работу C # и WPF.

Как всегда, благодаря сообществу StackOverflowза любую помощь.:)

1 Ответ

5 голосов
/ 22 апреля 2011

Концепция, которую вы, вероятно, должны понимать, состоит в том, что цепочка инструментов генерирует код из файлов XAML, который придает декларативному XAML «похожее на код» поведение.

Но WPF довольно сложен и не очень похож начто-нибудь еще, и книга могла бы быть полезной - лично я думаю, что книга Адама Натана WPF превосходна и будет охватывать это "общее понимание концепций" намного лучше, чем Интернет, IMO.

Сгенерированное приложениефайл, вероятно, будет называться app.g.cs и будет находиться в одном из промежуточных каталогов файлов. Загляните туда, чтобы увидеть фактический загрузочный код - среди прочего вы найдете что-то вроде:

    public static void Main() {
        MyAppName.App app = new MyAppName.App();
        app.InitializeComponent();
        app.Run();
    }

с этого момента это может начать приобретать больше смысла.

Фактически, вы можете написать весь этот код запуска самостоятельно, если вам не нравится декларативный маршрут.

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