0
我有下面的代碼:綁定的靜態資源
<!-- Automatically apply icons to context menus based on the header value -->
<Style x:Key="DecoratedMenuItem" TargetType="MenuItem" BasedOn="{StaticResource MenuItem}">
<Style.Resources>
<clr:Double x:Key="CanvasSize">16</clr:Double>
<converters:IgnoreUnderscoresConverter x:Key="IgnoreUnderscoresConverter" />
</Style.Resources>
<Style.Triggers>
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Run" Canvas="{StaticResource appbar_control_play}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Edit" Canvas="{StaticResource appbar_edit}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Delete" Canvas="{StaticResource appbar_delete}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Install" Canvas="{StaticResource appbar_social_dropbox_download}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Uninstall" Canvas="{StaticResource appbar_delete}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Advanced" Canvas="{StaticResource appbar_tardis}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Undo" Canvas="{StaticResource appbar_undo}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Redo" Canvas="{StaticResource appbar_redo}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Exit" Canvas="{StaticResource appbar_close}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Close" Canvas="{StaticResource appbar_close}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Copy" Canvas="{StaticResource appbar_page_copy}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Cut" Canvas="{StaticResource appbar_scissor}" />
<local:IconTrigger Binding="{Binding Header, RelativeSource={RelativeSource Self}, Converter={StaticResource IgnoreUnderscoresConverter}}" IconSize="{StaticResource CanvasSize}" Value="Paste" Canvas="{StaticResource appbar_clipboard_paste}" />
</Style.Triggers>
</Style>
而且在努力減少一些副本,並從綁定粘貼,我試圖創建一個共同的結合作爲資源字典中的靜態資源:
<!-- Automatically apply icons to context menus based on the header value -->
<Style x:Key="DecoratedMenuItem" TargetType="MenuItem" BasedOn="{StaticResource MenuItem}">
<Style.Resources>
<clr:Double x:Key="CanvasSize">16</clr:Double>
<converters:IgnoreUnderscoresConverter x:Key="IgnoreUnderscoresConverter" />
<Binding x:Key="HeaderBinding" Path="Header" RelativeSource="{RelativeSource Self}" Converter="{StaticResource IgnoreUnderscoresConverter}" />
</Style.Resources>
<Style.Triggers>
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Run" Canvas="{StaticResource appbar_control_play}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Edit" Canvas="{StaticResource appbar_edit}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Delete" Canvas="{StaticResource appbar_delete}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Install" Canvas="{StaticResource appbar_social_dropbox_download}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Uninstall" Canvas="{StaticResource appbar_delete}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Advanced" Canvas="{StaticResource appbar_tardis}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Undo" Canvas="{StaticResource appbar_undo}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Redo" Canvas="{StaticResource appbar_redo}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Exit" Canvas="{StaticResource appbar_close}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Close" Canvas="{StaticResource appbar_close}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Copy" Canvas="{StaticResource appbar_page_copy}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Cut" Canvas="{StaticResource appbar_scissor}" />
<local:IconTrigger Binding="{StaticResource HeaderBinding}" IconSize="{StaticResource CanvasSize}" Value="Paste" Canvas="{StaticResource appbar_clipboard_paste}" />
</Style.Triggers>
</Style>
但我的程序都吐出來了以下異常: A「綁定」不能在「資源字典」集合中使用。 '綁定'只能在DependencyObject的DependencyProperty上設置。
是否有WPF/MVVM接受的方式來減少這種膨脹(以及由於複製/粘貼而產生錯誤的可能性)?