Использование C # вместо XAML в Silverlight - PullRequest
3 голосов
/ 01 июля 2011

Действительно ли XAML необходим? Если кто-то действительно хотел, можно ли все, что отображается на странице Silverlight, быть объявлено во время выполнения в коде C #? VISIFire имеет пример кода, в котором они устанавливают один из своих классов, диаграмму, в коде C #, а затем просто добавляют его в пользовательский интерфейс простым вызовом C #:

LayoutRoot.Children.Add(chart);

Как бы я сделал подобное создание с классом, который я уже определил в файле XAML, но по другим причинам мне нужно объявить его во время выполнения? Если бы я мог использовать его как в XAML, я думаю, что это сработало бы, потому что нет ошибок при его отображении. Объявлено так:

        <views:PrescriberPage01 x:Name="DashboardPrescriberPage01" 
    Visibility="Collapsed" SelectedProduct="{Binding SelectedProduct,
 Mode=TwoWay}"Grid.Row ="0"/>

Как бы я объявил это в коде C #?

Ответы [ 5 ]

3 голосов
/ 01 июля 2011

Действительно ли XAML необходим?

Полагаю, нет, вы, вероятно, можете делать все, что вы можете делать в XAML в коде. Но XAML - это действительно намного более удобный способ. И я думаю, что мало кто не согласится с этим.

Как бы я объявил это в коде C #?

Вы можете создавать привязки в коде. Пример из MSDN . В вашей ситуации это будет что-то вроде:

PrescriberPage01 page = new PrescriberPage01();
page.Visibility = Visibility.Collapsed;

Binding myBinding = new Binding("SelectedProduct");
myBinding.Mode = BindingMode.TwoWay;
myBinding.Source = this; // or whatever object carrying the property
                         // "SelectedProduct" that you bind against.

page.SetBinding(PrescriberPage01.SelectedProduct, myBinding);
LayoutRoot.Children.Add(page);
1 голос
/ 01 июля 2011

Я бы скорее сказал: «Действительно ли C # необходим для графического интерфейса, когда я могу использовать XAML»?XAML действительно хорош и был явно разработан для GUI.

У вас есть два варианта здесь.Загрузите XAML динамически .

или создайте его в коде.(другие опубликовали решение, пока я снова печатал!))

1 голос
/ 01 июля 2011

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

0 голосов
/ 01 июля 2011

Одним конкретным примером того, что вы не можете создать без Xaml, является DataTemplate.

Вы можете написать код, который создаст DataTemplate из строки XAML, но вы не можете добавлять дочерние элементы в обновленную версию.DataTemplate непосредственно в c #.

0 голосов
/ 01 июля 2011

Простые элементы управления просты, но ... вам также может понадобиться стилизация этих объектов + вам может понадобиться анимация или два ... это уже (в основном) в xaml ... и это очень просто ... Если вы так ненавидите xaml, вы можете подумать о "Blend"; p

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