2010-04-01 2 views
1

Как я могу программно установить текст на RibbonButton? Прямо сейчас у меня есть код ниже, но кнопка не отображает «Обзор». Какие-либо предложения?WPF RibbonButton

RibbonButton btn = new RibbonButton(); 
btn.Name = "btnBrowse"; 
btn.Content = "Browse"; 
btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; 
btn.Click += new RoutedEventHandler(btn_Click); 

ответ

4

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

var cmd = new RibbonCommand(); 
cmd.LabelTitle = "Browse"; 
cmd.CanExecute += (sender, args) => args.CanExecute = true; 
cmd.Executed +=new ExecutedRoutedEventHandler(cmd_Executed); 

var btn = new RibbonButton(); 
btn.Command = cmd; 

MyRibbonGroup.Controls.Add(btn); 

Вы должны назначить true для CanExecute, иначе команда/кнопка всегда будет отключена. Метод CanExecute может отключить вашу бизнес-логику или включить команду/кнопку.

+0

Вы правы, если у вас есть кнопка внутри RibbonGroup. Но если у вас это есть в RibbonControlGroup (как у меня было), он не работает – melculetz

+0

RibbonCommand удаляется из ленты WPF. Теперь, как мы устанавливаем ярлык и т. Д. Кнопки? –

+0

@Mert - Прошло некоторое время с тех пор, как я просмотрел ленту MS WPF. Возможно, вы захотите опубликовать свой вопрос в качестве нового вопроса в качестве ссылки на этот ответ, возможно, более недействительный с новой версией (я не могу это проверить). –

1

WPF Кнопки - это контейнеры, как и все остальное в WPF. Создать TextBlock и установить его в качестве содержания вашей кнопки:

RibbonButton btn = new RibbonButton(); 
btn.Name = "btnBrowse"; 
TextBlock btnText = new TextBlock(); 
btnText.Text = "Browse"; 
btn.Content = btnText; 
btn.HorizontalAlignment = System.Windows.HorizontalAlignment.Left; 
btn.Click += new RoutedEventHandler(btn_Click); 

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

+1

RibbonButtons из библиотеки RibbonControlsLibrary ведут себя не так, как стандартные кнопки WPF. См. Мой ответ. –

+0

К сожалению, это не работает. У них, похоже, другое поведение, чем обычные кнопки – melculetz

+0

@Metro Smurf: интересно, спасибо за комментарий и другой ответ; Я не знал об этом. Я собираюсь удержать меня, так что кто-то может разглядеть разницу. – Randolpho