私のアプリには、3 つの状態を持つトグル ボタンがあります。「未チェック」、「チェック済み」、「以前使用していた」。ユーザーがこの特定の画面に来ると、トグル ボタンの一部が「以前に使用された」状態になり、どのような作業が行われたかが示されます。トグル ボタンをクリックすると (現在の状態に関係なく)、「チェック済み」状態になります。一度にチェックできるトグル ボタンは 1 つだけです。さまざまな状態は、さまざまな色の外側のグロー、またはまったくグローがないことで示されます。
「チェック済み」状態の外側のグローを設定するには、IsChecked euqals true でトリガーを使用します。
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect Color="Salmon" BlurRadius="40" ShadowDepth="0" Opacity="1.0"></DropShadowEffect>
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
「以前に使用された」状態の場合、マークアップではなくコード内の外側のグローを適用します。ボタンをこの状態にする必要があるかどうかを判断するには、リストの値を確認する必要があるため、これを行う必要があります。
if (mExistingViews.Contains(mViews[i].LocalizedName))
{
DropShadowEffect dse = new DropShadowEffect();
dse.ShadowDepth = 0;
dse.BlurRadius = 20;
dse.Opacity = 1.0;
dse.Color = Colors.Yellow;
mViewButtons[i].Effect = dse;
}
ただし、「以前に使用した」状態でトグル ボタンをクリックすると、トリガーは何の効果もないように見えます。外側の輝きは変わりません。
私は何を間違っていますか?トリガーは、XAML で設定されていないものには影響しませんか?