0

我有一个锁定/解锁的挂锁图标,实现为带有一些绘图原语的复选框,这些原语由 IsChecked 上的触发器更改。它在 Blend 中运行良好。在 VS2010 和内置应用程序中,当挂锁从默认打开状态切换到关闭状态时,挂锁主体会消失,因此只有关闭的“箍”可见。箍在正确的位置 - 它确实移动,因此控件似乎确实切换了画布。切换回来时,身体再次出现。有没有人遇到过类似的/知道会发生什么?

模板;

<Canvas x:Key="PadlockClosed" Width="21" Height="21">
    <Path Data="M10.668887,13.83234 C10.168442,2.3320701 20.347726,0.31172793 21.014875,13.894838" Height="9.451" Canvas.Left="2.719" Stretch="Fill" Canvas.Top="0.162" Width="10.362" StrokeThickness="2" Stroke="#FFE2E2E2"/>
    <ContentPresenter Content="{DynamicResource PadlockBody}"/>
</Canvas>

<Canvas x:Key="PadlockOpen" Width="21" Height="21">
    <Path Data="M10.668887,13.83234 C10.168442,2.3320701 20.347726,0.31172793 21.014875,13.894838" Height="9.451" Canvas.Left="11.102" Stretch="Fill" Canvas.Top="0.162" Width="10.362" StrokeThickness="2" Stroke="#FFE2E2E2"/>
    <ContentPresenter Content="{DynamicResource PadlockBody}"/>
</Canvas>

    <Canvas x:Key="PadlockBody">
        <Rectangle Height="12.8" Canvas.Left="0.125" Canvas.Top="8.0" Width="15.082" RadiusX="4" RadiusY="4" RenderTransformOrigin="0.704,0.5">
            <Rectangle.Fill>
                <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                    <LinearGradientBrush.RelativeTransform>
                        <TransformGroup>
                            <ScaleTransform CenterY="0.5" CenterX="0.5"/>
                            <SkewTransform CenterY="0.5" CenterX="0.5"/>
                            <RotateTransform Angle="-90" CenterY="0.5" CenterX="0.5"/>
                            <TranslateTransform/>
                        </TransformGroup>
                    </LinearGradientBrush.RelativeTransform>
                    <GradientStop Color="#FF8B8989" Offset="0"/>
                    <GradientStop Color="White" Offset="1"/>
                </LinearGradientBrush>
            </Rectangle.Fill>
        </Rectangle>
        <Path Data="M15.1,16.333333 L15.1,19.750334" Height="5.417" Canvas.Left="6.375" Stretch="Fill" Stroke="Black" StrokeThickness="1" StrokeEndLineCap="Round" Canvas.Top="11.333" Width="2.167"/>
        <Ellipse Height="2.5" Canvas.Left="6.125" Canvas.Top="11.333" Width="2.584" Fill="#FF0A0101"/>
    </Canvas>

我用来测试的东西;

<CheckBox Template="{DynamicResource PadlockCheckBox}" Width="20" Height="20" IsChecked="True"/>

资源是动态的唯一原因是为了简化 Blend。

4

1 回答 1

0

似乎没有其他人有更好的答案,所以虽然有点蹩脚,但我会发布我发现的解决方法。我没有在 PadlockOpen 和 PadlockClosed 画布中重新使用 PadlockBody,而是将其复制以创建 PadlockBody2,并在其中一种情况下使用它。出于某种奇怪的原因,在同一控件模板中的两种情况下使用相同的画布资源似乎会在构建的应用程序中搞砸,即使它在 Blend 中运行良好。

于 2013-01-09T09:09:40.073 回答