2010-04-01 36 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

RibbonControlsLibrary的RibbonButtons的行为与标准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 2010-04-02 13:01:06

+0

RibbonCommand已从WPF功能区中删除。现在,我们如何设置按钮的标签等? – 2012-08-06 11:51:55

+0

@Mert - 自从我查看了MS WPF Ribbon之后已经有一段时间了。您可能想将您的问题作为新问题发布,因为引用此答案可能不再适用于新版本(但我无法验证此问题)。 – 2012-08-06 13:38:01

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); 

这么说,我hightly建议你考虑建设XAML你的用户界面。如果文本在运行时会更改,则将数据绑定到该按钮的文本。

+1

RibbonControlsLibrary的RibbonButtons与标准WPF按钮的行为不同。看到我的答案。 – 2010-04-01 17:44:45

+0

不幸的是,它不工作..他们似乎有一个不同于普通按钮的行为 – melculetz 2010-04-02 12:53:56

+0

@Metro Smurf:有趣的是,感谢评论和其他答案;我没有意识到这一点。我会保持我的周围,所以任何人都可以看到差异。 – Randolpho 2010-04-02 13:28:27

相关问题