2
WPFのスタイルを定義していますTabControl
TabItem
。 マウス(左ボタン)を押してTabItem
が選択されていないのにTrigger
が見つからない場合、TabItem
にわずかな「プッシュダウン」エフェクトを表示したいです。WPF TabItemスタイル(マウス左ボタンが押されている場合)
MultiTrigger
をIsMouseLeftButtonDown
とIsPressed
のプロパティで定義しようとしましたが、いずれも認識されませんでした。マウス左ボタンがTabItem
に押されたときに、アクションに入ったTrigger
を設定する方法
<Style TargetType="{x:Type TabItem}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabItem">
<Border Name="bd" BorderThickness="1,1,0,0">
<Grid>
<ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Center"
ContentSource="Header"/>
</Grid>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseLeftButtonDown" Value="True" /> <!--NOT RECOGNIZED-->
<Condition Property="IsSelected" Value="False" />
</MultiTrigger.Conditions>
<Setter TargetName="bd" Property="Background" >
<Setter.Value>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="Green" Offset="0"/>
<GradientStop Color="Yellow" Offset="1"/>
</LinearGradientBrush>
</Setter.Value>
</Setter>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
?
EDIT
私はEventTrigger
を試してみましたが、私は
<EventTrigger RoutedEvent="UIElement.PreviewMouseLeftButtonDown">
<BeginStoryboard>
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" To="Green" Duration="0:0:3" />
</Storyboard>
<BeginStoryboard/>
<EventTrigger/>
以下で任意の効果は、それが何らかの形でこのように達成することができます表示されないのですか?
これは機能しません。 MouseActionをリッスンする場合は、EventTriggerを使用する必要があります。イベントトリガーは1つの条件のみを受け入れます。したがって、あなたの 'IsSelected = False'は動作しません。回避策は、 'IsMouseLeftButtonDown'の代わりに' IsMouseOver'を使うことです。ホバー効果をシミュレートします – lokusking
ホバー効果を与えるので、ここでIsMouseOverは間違っています。私はそれがすでに正しく実装されています。 – Nuts
EventTriggerの投稿を編集しましたが、動作させることはできません – Nuts