Используя универсальные аргументы на Окне WPF, определенном в XAML

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

То, что я пытаюсь выполнить, является заменой для всего MessageBox, призывает к выяснению у вопросов о пользователе, где я могу дать значимые подписи кнопки ('Сохраняют и выходят'/'Quit, не сохраняя'/'Don't выход' вещь типа). Я хотел бы смочь передать окно универсальный аргумент, ограниченный к Системе. Перечисление, определяющее возвращаемое значение для выбранной опции:

<Window x:Class="EvilPenguin.MultipleChoiceQuestionBox">
    ...

public partial class MultipleChoiceQuestionBox<T> : Window where T : System.Enum
{
    public MultipleChoiceQuestionBox()
    {
        InitializeComponent();
    }

    public T SelectedOption
    {
        get;
    }
}
  • Существует ли способ, которым я могу заставить свой XAML генерировать частичный класс с корректным универсальным аргументом?
  • Я, 'делая его неправильно'? Действительно ли это - плохая идея по некоторым причинам или является там более легким путем?
  • Разве это не возможно в XAML в данный момент? Атрибут x:TypeArgument не вполне делает то, что я хочу, но он предполагает, что по крайней мере некоторые аспекты XAML знают об универсальных аргументах

Любая справка или подсказки очень ценятся

9
задан TheEvilPenguin 14 July 2010 в 16:32
поделиться

3 ответа

Вы не можете этого сделать. Вот мой ответ на этот аналогичный вопрос SO :

Нет, вы не можете объявить универсальный тип в XAML. Из http://social.msdn.microsoft.com/forums/en-US/wpf/thread/02ca0499-80af-4c56-bb80-f1185a619a9e :

Здравствуйте, вы можете использовать универсальный, пока в виде вы не используете XAML. Но, к сожалению, если вы хотите использовать XAML для определения своего элемент управления, вы не можете использовать универсальный…

Вы можете создать элемент управления в XAML, который наследуется от универсального типа, поместив атрибут x: TypeArguments в корневой тег, но сам элемент управления должен быть конкретным .

7
ответ дан 2 November 2019 в 23:58
поделиться

Я не эксперт XAML, но быстрый поиск в Google по запросу «универсальные шаблоны в разметке XAML» привел меня к этой статье MSDN: http://msdn.microsoft.com/ en-us / library / ee956431.aspx

Похоже, это указывает на то, что вы действительно можете использовать дженерики в XAML. Посмотрите, подходит ли это вашему сценарию.

<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>
3
ответ дан 2 November 2019 в 23:58
поделиться

Попробуйте использовать x: Subclass и сделать подкласс универсальным. Это позволяет разрабатывать базовый класс (и загружать XAML), а производный класс использовать универсальный тип.

2
ответ дан 2 November 2019 в 23:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: