Как добавить кнопку XAML в C # - PullRequest
0 голосов
/ 12 июля 2011

Итак, я создал кнопку в xaml (сделал прямоугольник> щелчок правой кнопкой мыши> создать элемент управления> кнопка)

Я могу добавить его, когда я нахожусь в конструкторе xaml выражения blend, но я не могу понять, как создать их программно в c #.

предполагается, что я назвал новую кнопку btn_openRecent, а затем я хочу сделать что-то вроде этого:

btn_openRecent newBtn = new btn_openRecent();

Могу ли я сделать это? Я сохранил его как ресурс приложения, если это что-то меняет.

Спасибо!

Ответы [ 2 ]

2 голосов
/ 12 июля 2011

В XAML вы объявляете экземпляры класса Button и присваиваете значения некоторым свойствам.Таким образом, объект, созданный в XAML как

<Button Click="OnClick">Test</Button>

, может быть создан в C # как

Button b = new Button();
b.Content = "Test";
b.Click += OnClick;

Если вы вложили что-то в ресурсы приложения, вы можете получить его, используя

Button b = (Button)Application.Current.Resources["key"];

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

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

<Grid>
    <Button>Test</Button>
</Grid>

выражается в C # как

Grid g = new Grid();
Button b = new Button();
b.Content = "Test";
g.Children.Add(b);
1 голос
/ 12 июля 2011

Ваша CustomButton - это либо UserControl, либо обычная кнопка с настроенной Template

Если это UserControl, вы можете использовать

MyCustomButton newBtn = new MyCustomButton();

Если это шаблон (более вероятный сценарий), вы бы создали обычную кнопку и применили стиль или шаблон

Button newBtn = new Button();
newBtn.Template = (ControlTemplate)FindResource("MyCustomButtonTemplate");
// Or if your Template is defined in a Style
newBtn.Style= (Style)FindResource("MyCustomButtonStyle");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...