如何通过MouseOver更改TabItem的标题图像?

时间:2016-09-11 13:04:14

标签: c# wpf xaml mahapps.metro

我有private int firingInterval; private double moveSpeed; ... public boolean equals(Object obj) { //objects are equal if same firingInterval and moveSpeed GameSettings other; boolean result = false; //TODO other = (GameSettings) obj; if (obj instanceof GameSettings) { return (firingInterval == other.getFiringInterval() && moveSpeed == other.getMoveSpeed()); } else { return result; } } 这样:

TabControl

在这个<TabControl> <TabItem Header="playing" HorizontalAlignment="Left" Width="150" Tag="Tab1"> <TabItem.HeaderTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock Text="{Binding}" ToolTip="playing" /> <Image Margin="10,0,0,0" Source="/logo.png" Height="25"/> </StackPanel> </DataTemplate> </TabItem.HeaderTemplate> </TabItem> ... 我有三个不同的TabItem,每个标签项都有一个默认图像。我的目标是更改用户放置鼠标的图像TabItem。

因此,在这种情况下,当鼠标悬停在此标签项上时,TabControl“正在播放”而不是ToolTip的TabItem 1应该有logo.png

我该怎么做?

注意:请注意我正在使用mahapp,并且我使用logo2来保留工具提示文本而不会覆盖mahapp标签项的原始样式。

1 个答案:

答案 0 :(得分:1)

试试这个:

<强> XAML:

<Controls:MetroWindow
                  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                  xmlns:Controls="http://metro.mahapps.com/winfx/xaml/controls"
                  xmlns:local="clr-namespace:MahApps.Metro.Application21" 
                  x:Class="MahApps.Metro.Application21.MainWindow"
                  BorderThickness="1"
                  BorderBrush="{DynamicResource AccentColorBrush}"
                  Icon="mahapps.metro.logo2.png"
                  Title="MainWindow"
                  Height="350"
                  Width="525">
<Controls:MetroWindow.Resources>

    <DataTemplate x:Key="DataTemplate1">
        <StackPanel x:Name="Panel1" Orientation="Horizontal">
            <TextBlock Text="{Binding Text}" ToolTip="{Binding Text}" />
            <Image x:Name="Image1" Source="{Binding Logo}" Margin="10,0,0,0" Height="25"/>
        </StackPanel>
        <DataTemplate.Triggers>
            <Trigger SourceName="Panel1" Property="IsMouseOver" Value="true" >
                <Setter TargetName="Image1" Property="Source" Value="logo4.png" />
            </Trigger>
        </DataTemplate.Triggers>
    </DataTemplate>

</Controls:MetroWindow.Resources>

<Controls:MetroWindow.DataContext>
    <local:MyViewModel/>
</Controls:MetroWindow.DataContext>

<Grid>
    <TabControl ItemsSource="{Binding Data}" ItemTemplate="{StaticResource DataTemplate1}">
    </TabControl>
</Grid>

<强>视图模型:

public class MyViewModel
{
    public ObservableCollection<MyData> Data { get; set; }

    public MyViewModel()
    {
        Data = new ObservableCollection<MyData>
        {
            new MyData {Logo = "logo1.png", Text = "playing 1" },
            new MyData {Logo = "logo2.png", Text = "playing 2" },
            new MyData {Logo = "logo3.png", Text = "playing 3" }
        };
    }
}

enter image description here