問題タブ [visualstategroup]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
265 参照

c# - VisualStateManager の「Focused」VisualState のスタイル効果を更新する方法は?

次のような ListBoxItem のスタイルがあり、listBoxItem が前述の VisualState のままである場合に「フォーカス」視覚効果が失われるという問題があります。「フォーカスされた」ListBoxItemに適切な視覚効果を強制的に表示するにはどうすればよいですか?

バグを達成するシナリオ:

1) ListBoxItem をクリックします -> フォーカスとスタイルを受け取ります (ok)。

2) ポインターをこの ListBoxItem の上に移動します -> まだフォーカスがあり、「MouseOver」のスタイルを受け取ります (ここで提案されているように、別の VisualStateGroup 'CommonStates' 内にあります: https://msdn.microsoft.com/en-us/library /system.windows.controls.listboxitem%28v=vs.95%29.aspx )(わかりました).

3) マウスを ListBoxItem の境界から離す -> MouseOver(ok) のスタイルを失います。

4) 現在、ListBoxItem は「CommonStates」の「Normal」状態であり、「Focused」でもありますが、「Focused」のスタイリッシュさがありません (これは私の問題です)。

5) この ListBoxItem をクリックしようとしても効果がない

どう対処すればよいか、アドバイスをいただけないでしょうか。

Silverlight を使用しているため、トリガーは禁止されています。

これが私のスタイルです:

VisualStateGroup を「FocusStates」から SelectionStates に変更すると、同じように動作します。ユーザーがどこかをクリックし、別のコントロールにも同様の境界線がある場合、UI に視覚的な不一致が生じる可能性があるため、選択ではなくフォーカスに関連付けたいと考えています。

ところで:私が読んだ別のmsdnサイトで:「コントロールは、そのControlTemplateで定義されている各VisualStateGroupに対して常に1つの状態にあり、同じVisualStateGroupから別の状態になったときにのみ状態を離れます。」コード ビハインドから、listBoxItem がまだフォーカスされていることを確認しました。その上、マウスが listBoxItem を離れた後、その状態に強制しようとしていましたが、結果はありませんでした (簡略化: ActiveViewDefinition は、リストボックス内の実際にフォーカスされた項目の代わりです):