Sử dụng multytrigger bị lỗi khi dùng cho tabitem

Em thử dùng multytriggers cho cả 2 đối tượng là button và tabitem như sau:
Button:

<Window x:Class="WpfApp2.Window2"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="Window2" Height="300" Width="300">
    <StackPanel Margin="0,40,0,0">
        <Button Content="Click Me">
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="Button">
                                <Border x:Name="border" BorderThickness="{TemplateBinding BorderThickness}" BorderBrush="{TemplateBinding BorderBrush}" Background="{TemplateBinding Background}">
                                    <ContentPresenter x:Name="content" ContentSource="Content"></ContentPresenter>
                                </Border>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="IsMouseOver" Value="True">
                                        <Setter Property="Foreground" Value="SpringGreen"/>
                                    </Trigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsMouseOver" Value="True"/>
                                            <Condition Property="IsPressed" Value="True"/>
                                        </MultiTrigger.Conditions>
                                        <Setter Property="Foreground" Value="Blue"/>
                                    </MultiTrigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Button.Style>
        </Button>
    </StackPanel>
</Window>

Và TabItem:

<Window x:Class="Miraina.SettingWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Miraina"
        mc:Ignorable="d" FontFamily="Segoe UI" Foreground="#FF363636" WindowStartupLocation="CenterScreen" ResizeMode="CanMinimize"
        Title="Cài đặt" Height="600" Width="900" Background="#FF343434">
    <TabControl TabStripPlacement="Left">
        <TabControl.Resources>
            <Style TargetType="TabItem">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="TabItem">
                            <Border Name="border" Margin="0,0,-1,0" Padding="20,5" Background="#fff" BorderThickness="3,0,0,1" BorderBrush="#FF363636">
                                <ContentPresenter x:Name="content" VerticalAlignment="Center" HorizontalAlignment="Left" ContentSource="Header"></ContentPresenter>
                            </Border>
                            <ControlTemplate.Triggers>
                                <Trigger Property="IsSelected" Value="True">
                                    <Setter TargetName="border" Property="Background" Value="#FF727272"></Setter>
                                </Trigger>
                                <Trigger Property="IsSelected" Value="False">
                                    <Setter TargetName="border" Property="Background" Value="#FF474747"></Setter>
                                </Trigger>
                                <MultiDataTrigger>
                                    <MultiDataTrigger.Conditions>
                                        <Condition Property="IsMouseOver" Value="True"></Condition>
                                        <Condition Property="IsSelected" Value="False"></Condition>
                                    </MultiDataTrigger.Conditions>
                                    <Setter TargetName="border" Property="Background" Value="#FF575757"></Setter>
                                    
                                </MultiDataTrigger>
                            </ControlTemplate.Triggers>
                            
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </TabControl.Resources>
        <TabItem IsSelected="True">
            <TabItem.Header>
                <TextBlock FontSize="16" Foreground="White"><Span FontFamily="Material Icons" FontSize="24">settings</Span><TextBlock Margin="5,-6,0,0">Chung</TextBlock></TextBlock>
            </TabItem.Header>
            <ScrollViewer VerticalScrollBarVisibility="Auto">
                <StackPanel Margin="20,30">
                    <TextBlock>ghfuhufgsdvfvbdy</TextBlock>
                </StackPanel>
            </ScrollViewer>
        </TabItem>
        <TabItem>
            <TabItem.Header>
                <TextBlock FontSize="16" Foreground="White"><Span FontFamily="Material Icons" FontSize="24">person</Span><TextBlock Margin="5,-6,0,0">Cá nhân</TextBlock></TextBlock>
            </TabItem.Header>
            <StackPanel>

            </StackPanel>
        </TabItem>
        <TabItem>
            <TabItem.Header>
                <TextBlock FontSize="16" Foreground="White"><Span FontFamily="Material Icons" FontSize="24">web</Span><TextBlock Margin="5,-6,0,0">Hệ thống</TextBlock></TextBlock>
            </TabItem.Header>
            <ScrollViewer VerticalScrollBarVisibility="Auto">
                <StackPanel>
                    <TextBlock Padding="30,40" FontSize="16" Foreground="Gray">Xin lỗi, chúng tôi vẫn đang phát triển chức năng này :))</TextBlock>
                </StackPanel>
            </ScrollViewer>
        </TabItem>
    </TabControl>
</Window>

Tại sao về cách thức 2 cái gần giống nhau mà cái thì chạy được (Button) cái thì không (TabItem) ạ? Mấy bác giúp em tìm bug với, em mò mãi không ra!

T_T chắc tại hỏi ngu nên mãi ko ai trả lời

Chịu chết thôi. Chả biết cái nào không chạy, cũng chả biết không chạy thì báo lỗi gì.
Tết nhất đến nơi rồi nên ai cũng bận không có thời gian tạo project rồi paste code đâu.

Muốn giúp mà đành chịu ::))

1 Like

:)) thế thì chắc em sẽ phải tu luyện thêm r :))
Bác rep làm em bớt tự ti hơn :))

Thứ nhất là 2 thằng có controltemplate khác nhau nên chưa chắc viết giống nó đã chạy.
Thứ hai phải xem lại multitrigger là and condition hay or condition.

Trong này không chuộng C# với Windows nên ít khách lắm ::))

1 Like

:)) Kệ, em vẫn thích C#. (ngoài lề 1 tí)
Thôi để hôm khác em test lại, em đang tập tành tí. Bác có Facebook không cho em xin có j khó em hỏi :))? (Chắc bác làm cả C# cả Java hem)

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?