Style里创建的UI元素都是共享的

前提是当Style在一个界面上被多次使用(比如MenuItem的Style,如果ItemContainerStyle来设置,使用的是同一个Style,被用到多个menuItem的情况)

就会出现:Specified element is already the logical child of another element. Disconnect it first.

如果错误被吃掉了,界面上就会出现没有被用上Style的元素。

比如

<Style x:Key="m1" TargetType="{x:Type MenuItem}"? BasedOn="{StaticResource {x:Type MenuItem}}" >
?????????? <Setter? Property="Header">
???????????????? <Setter.Value>

??????????????????????? <TextBlock………>

?????????????????? </Setter.Value>
?????????? </Setter>

?????? </Style>

类似这篇文章里提到的现象。解决方案是用x困惑hared = false. 见msdn的解释。

?

<Label x:Shared="false" x:Key="l" Content="{Binding}">
????? </Label>
????? <Style x:Key="m1" TargetType="{x:Type MenuItem}"? BasedOn="{StaticResource {x:Type MenuItem}}" >
????????? <Setter? Property="Header" Value="{StaticResource l}">??????????????
????????? </Setter>
????? </Style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值