我在外部程序集中的ResourceDictionary中定义了3个样式,如下所示:
<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type res:Common},
ResourceId=numbersOnly}" TargetType="TextBox">
...
</Style>
<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type res:Common},
ResourceId=positiveInt}" TargetType="TextBox">
...
</Style>
<Style x:Key="{ComponentResourceKey TypeInTargetAssembly={x:Type res:Common},
ResourceId=positiveDecimal}" TargetType="TextBox">
...
</Style>
在同一个程序集中,我定义了一个这样的类:
public static class Common {
public static ComponentResourceKey NumbersOnly {
get {
return new ComponentResourceKey(
typeof(Common), "numbersOnly");
}
}
public static ComponentResourceKey PositiveInt {
get {
return new ComponentResourceKey(
typeof(Common), "positiveInt");
}
}
public static ComponentResourceKey PositiveDecimal {
get {
return new ComponentResourceKey(
typeof(Common), "positiveDecimal");
}
}
}
我使用这样的样式:
<TextBox Style="{DynamicResource {x:Static segres:Common.NumbersOnly}}" />
如果我在上面的类中只定义了一个属性,但是如果我定义了多个(如上所述)资源,则无法解析。
为什么会这样?这种行为对我来说似乎不合逻辑。
答案 0 :(得分:1)
这是WPF中包含外部词典的错误。它发生在3.5并且结转到4.0。