Я пытаюсь создать производный класс Окна в 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;
}
}
Любая справка или подсказки очень ценятся
Вы не можете этого сделать. Вот мой ответ на этот аналогичный вопрос SO :
Нет, вы не можете объявить универсальный тип в XAML. Из http://social.msdn.microsoft.com/forums/en-US/wpf/thread/02ca0499-80af-4c56-bb80-f1185a619a9e :
Здравствуйте, вы можете использовать универсальный, пока в виде вы не используете XAML. Но, к сожалению, если вы хотите использовать XAML для определения своего элемент управления, вы не можете использовать универсальный…
Вы можете создать элемент управления в XAML, который наследуется от универсального типа, поместив атрибут x: TypeArguments
в корневой тег, но сам элемент управления должен быть конкретным .
Я не эксперт XAML, но быстрый поиск в Google по запросу «универсальные шаблоны в разметке XAML» привел меня к этой статье MSDN: http://msdn.microsoft.com/ en-us / library / ee956431.aspx
Похоже, это указывает на то, что вы действительно можете использовать дженерики в XAML. Посмотрите, подходит ли это вашему сценарию.
<my:BusinessObject x:TypeArguments="x:String,x:Int32"/>
Попробуйте использовать x: Subclass
и сделать подкласс универсальным. Это позволяет разрабатывать базовый класс (и загружать XAML), а производный класс использовать универсальный тип.