Как изменить макет элемента управления WPF вне этого элемента управления - PullRequest
0 голосов
/ 19 декабря 2008

Я большой в создании кода для уровня обслуживания / данных моих приложений. Что я действительно хотел бы сделать, так это сгенерировать некоторые базовые элементы управления WPF, шаблоны данных или какой-либо другой код XAML на основе метаданных, которые я использую для создания уровня обслуживания / данных. РЕДАКТИРОВАТЬ: Это поколение выполняется до времени компиляции.

Что я предполагаю, так это возможность генерировать элемент управления с базовыми элементами управления TextBlocks, Labels, Date Pickers, Textboxes, Checkboxes и т. Д. На основе типов моих данных.

Главное, чего мне не хватает, так это никогда не касаться сгенерированного кода XAML и полностью контролировать макет вне его. В мире Интернета я мог бы технически сделать это, генерируя «семантический» html, а затем используя CSS-селекторы, чтобы выбрать узлы и расположить их. С помощью CSS / HTML я мог полностью изменить макет и никогда не трогать сгенерированный HTML.

Есть ли в WPF какой-либо способ управления макетом элемента управления или шаблона данных вне этого кода? (Селекторы, визуальное наследование и т. Д.?)

Спасибо! Jon

Ответы [ 3 ]

2 голосов
/ 21 апреля 2009

Использование Grid.SetColumn( UIElement, value ) & Grid.SetRow( UIElement, value ).

0 голосов
/ 16 сентября 2010

Вы можете изменить стили (и даже шаблоны ControlTemplates) в диалогах WPF с помощью ресурсов: Если Ресурсы (на любом уровне, например, Приложение) содержат стиль с TargetType = TextBox, это повлияет на все текстовые поля внутри элемента управления, которые явно не указывают отклоняющийся стиль. В качестве альтернативы вы можете указать своему UserControl использовать определенные Style-Keys (StaticResource), а затем позднее решить, какой DataTemplate вы подключите для этих Style-Keys. Просто выберите DataTemplate-ResourceFiles, где DataTemplates используют нужные ключи и объедините их с вашими Application-Resources. Если вы измените Ресурсы таким образом, ваш сгенерированный код будет учитывать эти изменения во время выполнения.

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

0 голосов
/ 19 декабря 2008

Если я правильно понимаю, вы хотите динамически генерировать XAML, а затем проанализировать его и использовать?

Если это так, вы можете проанализировать / загрузить его в память, используя System.Windows.Application.LoadComponent (Uri uri). ИЛИ вы можете использовать XamlReader.Load (...).

Изменить (прочитайте вопрос еще раз, добавив несколько вещей): Вы можете использовать стили WPF для позиционирования и управления макетом этих элементов.

...