我有一个按钮样式,我在内容属性中有一些路径赛斯。在我显示这个按钮的第二个实例之前,它一直工作得很好。我得到了一个例外
指定的元素已经是另一个元素的逻辑子元素。请先断开连接。
其他像这样的帖子:
Error "Specified element is already the logical child of another element"?
这使我找到了一个解决方案,我需要将内容传输到ContentTemplate。
<Viewbox>
<Grid Margin="0,0,30,30">
<Path Fill="#FFFFFFFF">
<Path.Data>
<PathGeometry Figures="m 13.123027 65.796864 0 81.448876 133.750213 0 0 -133.778725 -67.192062 0 z" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path Fill="{StaticResource DataCRUDIconBrush}">
<Path.Data>
<PathGeometry Figures="M 79.624708 0.36218262 0 62.950511 l 0 97.411669 160 0 0 -159.99999738 -80.375292 0 z m 2.28303 16.89635038 61.172792 0 0 126.207297 -126.161061 0 0 -76.829978 0.187646 -0.156158 64.800623 0 0 -49.221161 z" FillRule="NonZero"/>
</Path.Data>
</Path>
<Path Fill="#FFFFFFFF">
<Path.Data>
<PathGeometry Figures="m 13.123027 65.796864 0 81.448876 133.750213 0 0 -133.778725 -67.192062 0 z" FillRule="NonZero"/>
</Path.Data>
<Path.RenderTransform>
<TranslateTransform X="30" Y="30"/>
</Path.RenderTransform>
</Path>
<Path Fill="{StaticResource DataCRUDIconBrush}">
<Path.Data>
<PathGeometry Figures="M 79.624708 0.36218262 0 62.950511 l 0 97.411669 160 0 0 -159.99999738 -80.375292 0 z m 2.28303 16.89635038 61.172792 0 0 126.207297 -126.161061 0 0 -76.829978 0.187646 -0.156158 64.800623 0 0 -49.221161 z" FillRule="NonZero"/>
</Path.Data>
<Path.RenderTransform>
<TranslateTransform X="30" Y="30"/>
</Path.RenderTransform>
</Path>
</Grid>
</Viewbox>如何才能在不丢失触发器的情况下,将此代码转换为适合ContentTemplate?
<Setter.Value>
<ControlTemplate TargetType="Button">
....
<ContentPresenter x:Name="Content" Opacity="0.5" Content="{TemplateBinding Content}" ContentTemplate="{TemplateBinding ContentTemplate}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" />
</ControlTemplate>
</Setter.Value>发布于 2012-09-05 03:55:17
我知道你的问题。您正在对ContentPresenter.Content属性使用数据绑定。在这种情况下,您需要确保绑定对象不是可视元素。这是非常重要的。断开与逻辑树的连接不是一个好的解决方案(换句话说就是“瓶颈”)。内容只能包含非可视对象。控件的所有可视部分都应位于其ContentPresenter.ContentTemplate属性中,而不是其他方式。
因此,我认为所有带有图形的代码都应该放在ContentTemplate属性中。如果你对它有问题,请分享你的整个样本,我会尽我所能帮助你。
https://stackoverflow.com/questions/12270058
复制相似问题