我有几个具有常见一些自定义属性的自定义控件,并且我想应用触发这些属性的通用样式。我把这些共同的属性在一个接口(IMyControl),并使我的控件实现它,但似乎风格不能有接口作为TargetType ...具有相同自定义属性的不同控件的常见样式
我的自定义属性是两个布尔值:bMandatory和bIncomplete。常见的风格部分是:
<Style.Triggers>
<Trigger Property="IsKeyboardFocusWithin" Value="True">
<Setter Property="Background" Value="{StaticResource FocusedBG}" />
</Trigger>
<Trigger Property="bMandatory" Value="True">
<Setter Property="Background" Value="{StaticResource MandatoryBG}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="bMandatory" Value="True" />
<Condition Property="bIncomplete" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource IncompleteBG}" />
</MultiTrigger>
</Style.Triggers>
我也把在界面中IsKeyboardFocusWithin布尔和背景刷,然后用尝试:
<Style x:Key="ControlRellenableEstilo">
<Style.Triggers>
<Trigger Property="local:IMyControl.IsKeyboardFocusWithin" Value="True">
<Setter Property="local:IMyControl.Background" Value="{StaticResource FocusedBG}" />
</Trigger>
<Trigger Property="local:IMyControl.bMandatory" Value="True">
<Setter Property="local:IMyControl.Background" Value="{StaticResource MandatoryBG}" />
</Trigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="local:IMyControl.bMandatory" Value="True" />
<Condition Property="local:IMyControl.bIncomplete" Value="True" />
</MultiTrigger.Conditions>
<Setter Property="Background" Value="{StaticResource IncompleteBG}" />
</MultiTrigger>
</Style.Triggers>
</Style>
它不抱怨时建设,但,当执行应用程序时,它抛出一个XamlParseException,说
无法分配到财产权的ystem.Windows.Setter.Value”
在该行指向: <Setter Property="local:IMyControl.Background" Value="{StaticResource FocusedBG}" />
它与下面的消息的内部异常:
值不能为空。参数名:财产”
的值=‘{StaticResource的FocusedBG}’部分是我的风格,其余的工作... 任何想法我怎么能解决这个问题?
我刚刚尝试过并得到相同的异常。在[msdn:样式和模板](http://msdn.microsoft.com/en-us/library/ms745683.aspx)中说*您可以在任何派生自FrameworkElement或FrameworkContentElement。*的元素上使用样式我猜一个接口不能是一个风格TargetType。必须有其他方式,但我有点失落。不管怎么说,还是要谢谢你。 – CarlosJ