2016-11-07 7 views
-4

Хорошо, так мне потребовалось много времени, но мне удалось подойти к более сложному вопросу. Использование Reflection мне удалось скосить его к этому:Изменение свойств элемента WPF с помощью методов

public void setButton(Button Button, string Content, string ToolTip) { PropertyInfo contentProperty = Button.GetType().GetProperty("Content"); PropertyInfo toolTipProperty = Button.GetType().GetProperty("ToolTip"); contentProperty.SetValue(Button, Convert.ChangeType(Content, contentProperty.PropertyType)) toolTipProperty.SetValue(Button, Convert.ChangeType(ToolTip, contentProperty.PropertyType)) } Я проверил это, и это работает довольно большой, но единственная проблема осталось, как я могу сделать это тот же метод изменить Click событие, а?

+0

На данный момент не беспокойтесь о производительности во время выполнения. Просто запустите его, затем оптимизируйте позже, если есть проблема с производительностью. –

+0

@EdPlunkett Приятно видеть тебя снова Эд, довольно помощник, а ты? Ну, чтобы быть конкретным здесь, проблема не в производительности ** runtime **, а в большей эффективности управления. Поскольку у меня было бы несколько событий, каждый из которых имеет собственный выбор, мне нужен был метод их установки, но я не знаю, как изменить свойства нескольких объектов в одном методе, и при этом я понятия не имею, как задайте определенные свойства в зависимости от строки «EV000», которая должна быть установлена ​​в TextBox. – Zephylir

+0

Ну, каков бы ни был смысл «эффективности», о котором вы беспокоитесь, перестаньте беспокоиться об этом и сначала начните свой код. Основываясь на вопросах, которые вы задаете здесь, это следующий шаг на вашем кратчайшем пути к написанию надежного, поддерживаемого кода на протяжении веков. –

ответ

1

Не используйте события и код в WPF.

DoCommands и привязка данных.

Предлагаю вам ознакомиться с некоторыми учебными пособиями, например, по адресу WPF Tutorial.net, в котором вы познакомитесь с концепциями, необходимыми для безболезненности вашей игры в WPF.

+0

Хотя я могу понять, почему это будет разумный выбор, я не понимаю, как я могу выполнить то, что мне нужно, используя эти команды. Насколько я могу судить, они выполняют строку кода, к которой может работать и метод, наряду с использованием переменных, полей и т. Д., Которые, похоже, не делают. Если бы не было способа добавить команду, которая будет срабатывать при изменении текстового свойства TextBox. – Zephylir

+0

@ Zephylir Насколько я могу судить, «и привязка данных» имеет шрифт того же размера, что и «Команды». У вас возникли проблемы с этим? –

+0

@EdPlunkett Хорошо, если вы имеете в виду создание переменной для хранения информации, которая должна использоваться элементами пользовательского интерфейса, а затем используя значение параметра для этих переменных внутри команд, конечно, это может сработать, я думаю. Но это будет использовать столько же, сколько просто делать это в коде, что я предпочитаю больше из-за необходимости использовать только это, а не просто идти между XAML и C#, чтобы выяснить, что не так – Zephylir