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 を簡単にするためです。