2011-11-02 77 views
0

我有在xaml中定义的嵌套对象。 例如,我有这样的代码(utils:HotkeyCommand是在代码隐藏我的MarkupExtension类):xaml中的嵌套属性语法

<dxb:BarButtonItem> 
    <dxb:BarButtonItem.Command> 
    <utils:HotkeyCommand /> 
    </dxb:BarButtonItem.Command> 
</dxb:BarButtonItem> 

这看起来相当笨拙,所以我决定重写它以下列方式(这工作得很好) :

<dxb:BarButtonItem Command="{utils:HotkeyCommand}" /> 

在那之后,我想在我的原代码来定义一些属性:

<dxb:BarButtonItem> 
    <dxb:BarButtonItem.Command> 
    <utils:HotkeyCommand CanExecuteNotifier="{StaticResource GeneralEnabled}" Executed="test" Gesture="Ctrl+N" /> 
    </dxb:BarButtonItem.Command> 
</dxb:BarButtonItem> 

我怎么能这个代码重新写一行我同样的方式?

我想得到像下面的东西(但它不编译)。有没有什么规则可以用来将一个符号转化为第二个符号?

<dxb:BarButtonItem Command="{utils:HotkeyCommand CanExecuteNotifier={StaticResource GeneralEnabled}, Executed={test}, Gesture={Ctrl+N}}" /> 
+1

这应该可以通过自定义标记扩展来实现。您可以在这里开始阅读关于标记扩展:http://msdn.microsoft.com/en-gb/library/ms747254.aspx。 – Amenti

回答

0

最后我做到了与X0R的答案的帮助工作

<dxb:BarButtonItem Command="{utils:HotkeyCommand {StaticResource GeneralEnabled}, Executed=test, Gesture=Ctrl+N}" /> 

除了去除括号我也不得不改变(其中有它到哪里去了?):

  1. 更改Executed从活动到持有委托人的财产
  2. 为了使可能使用g从一个资源的HotkeyCommand,我不得不用一个参数在MarkupExtension中创建一个构造函数,如上所述here