01/10/2018, 08:27

Xin hướng dẫn MultiTrigger trong source dictionary XAML, WPF

Chào mọi người e muốn để multitrigger trong souse dictionar nhưng nó báo lỗi Must have no-null value for “Binding”

<Style  TargetType="TextBox" x:Key="text" >
    <Setter Property="Margin" Value="100"/>
    <Setter Property="BorderBrush" Value="White"/>
    <Setter Property="BorderThickness" Value="5"/>
    <Setter Property="Background" Value="{x:Null}"/>
    <Style.Triggers>
        <MultiDataTrigger>
            <MultiDataTrigger.Conditions>
                <Condition Property="IsMouseOver" Value="true"/>
            </MultiDataTrigger.Conditions>
            <MultiDataTrigger.Setters>
                <Setter Property="BorderBrush" Value="Aqua"/>
                <Setter Property="BorderThickness" Value="10"/>
                <Setter Property="Background" Value="Black"/>
            </MultiDataTrigger.Setters>
        </MultiDataTrigger>
       
    </Style.Triggers>
</Style>

E nghỉ là phải binding cái gì đó nhưng không biết phải làm thế nào ạ, xin mọi người giúp đỡ

        <TextBox Style="{StaticResource ResourceKey= text}" />
Văn Dương viết 10:37 ngày 01/10/2018

Không có code ???

Dũng viết 10:41 ngày 01/10/2018

dạ e up code lên lại rồi ạ

Văn Dương viết 10:42 ngày 01/10/2018

Cái code này bạn viết trong 1 file xaml hay viết trong Window ?
Nếu viết trong 1 file xaml thì bạn phải khai báo file đó và trong khi set style thì set như thế này :

Style = {DynamicResource text}

Còn viết trong Resource của Window thì dùng lệnh này xem:

Style={StaticResource text}
Dũng viết 10:38 ngày 01/10/2018

Vẫn Không được ạ,e xài cả 2 cái đều vẫn bị cái lỗi "must have non-null value for bìnding "

Văn Dương viết 10:38 ngày 01/10/2018

Nhìn code thì thấy bạn đã viết trong 1 file xaml khác. Bạn đã khai báo file xaml này trong App.xaml chưa ?

Dũng viết 10:30 ngày 01/10/2018

dạ có ạ, e mà bỏ trigger đi nó lại trở về bình thường ạ

Văn Dương viết 10:43 ngày 01/10/2018

Sửa thử chỗ này xem có được không nhé:

//<Setter Property="Background" Value="{x:Null}"/>
Setter Property="Background" Value="Transparent"/>
Dũng viết 10:28 ngày 01/10/2018

Dạ vẫn không được ạ, nó bị gì chỗ trigger ý ạ, chắc cần binding cái gì đó

Văn Dương viết 10:41 ngày 01/10/2018

Nếu có 1 điều kiện thì bạn thay = Trigger thường xem sao.
Gửi cho mình cả project để mình xem thử

Dũng viết 10:37 ngày 01/10/2018

https://drive.google.com/open?id=0B6jkhtHC1IlnQlNzS3d5Umx2TFk
dạ a xem dùm e với ạ

Văn Dương viết 10:33 ngày 01/10/2018

Không có file bạn ơi.
Còn đây là code mình test. Không lỗi gì nhé :

Dictionary:

<Style TargetType="TextBox" x:Key="CustomTextBox">
        <Style.Triggers>
            <MultiTrigger>
                <MultiTrigger.Conditions>
                    <Condition Property="IsMouseOver" Value="True"/>
                    <Condition Property="IsFocused" Value="True"/>
                </MultiTrigger.Conditions>
                <MultiTrigger.Setters>
                    <Setter Property="Background" Value="Red"/>
                </MultiTrigger.Setters>
            </MultiTrigger>
        </Style.Triggers>
    </Style>

Khai báo trong App.xaml:

 <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/Templates_Styles/TextBox.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>

Trong View:

<TextBox Height="30" Style="{DynamicResource CustomTextBox}" Margin="77,65,8,0" Text="TextBox" VerticalAlignment="Top" VerticalContentAlignment="Center">

Kết quả :

Dũng viết 10:34 ngày 01/10/2018

dạ e biết e sai chỗ nào rồi ạ, cám ơn a nhiều

Văn Dương viết 10:27 ngày 01/10/2018

Bạn nên up nguyên nhân và cách xử lý lên cho các bạn sau nếu có gặp thì tìm thấy cách giải quyết.

Dũng viết 10:38 ngày 01/10/2018

E viết sai vú pháp multitrigger mà e viết là mutltidatatrigger

Bài liên quan
0