Реализация как controltemplate, так и триггеров данных для элемента управления textbox - PullRequest
1 голос
/ 23 августа 2011

Я новичок в WPF .... Я пытался реализовать controltemplate и datatriggers для текстового поля ... Я хочу изменить цвет фона текстового поля, когда значение, введенное в нем, не равно "18" через datatriggers .. (я хочу, чтобы controlproperty для текстового поля работал как есть) как я могу достичь этого .... написанный код Xaml выглядит следующим образом:

    <TextBox x:Uid="txtagevals" x:Name="txtAge" Height="25" Width="80" Background="Wheat"  BorderThickness="1" BorderBrush="Black">
        <TextBox.Template>
            <ControlTemplate x:Uid ="txtagevals" TargetType="{x:Type TextBox}">
                <Border Background="{TemplateBinding Background}" 
                    BorderBrush="Black" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5">
                      <ScrollViewer x:Name="PART_ContentHost"/>
                </Border>
            <ControlTemplate.Triggers>
                <DataTrigger Binding="{Binding Age}" Value="18">
                    <Setter TargetName="" Property="Text" Value="Green" />
                </DataTrigger>
            </ControlTemplate.Triggers>
        </ControlTemplate>
    </TextBox.Template>
</TextBox>

Может кто-нибудь, пожалуйста, помогите мне ... Спасибо ..

1 Ответ

2 голосов
/ 23 августа 2011

Попробуйте следующий код для проверки текста в текстовом поле:

<TextBox x:Uid="txtagevals" x:Name="txtAge" Height="25" Width="80">
            <TextBox.Style>
                <Style TargetType="{x:Type TextBox}">
                    <Setter Property="Background" Value="Red"/>
                    <Style.Triggers>
                        <Trigger Property="Text" Value="18">
                            <Setter Property="Background" Value="Green"/>
                        </Trigger>
                        <Trigger Property="Text" Value="">
                            <Setter Property="Background" Value="White"/>
                        </Trigger>
                    </Style.Triggers>
                </Style>
            </TextBox.Style>
        </TextBox>

В своем коде вы можете сделать это

 <TextBox x:Uid="txtagevals" x:Name="txtAge" Height="25" Width="80" BorderThickness="1" BorderBrush="Black">
                <TextBox.Style>
                    <Style TargetType="{x:Type TextBox}">
                        <Setter Property="Background" Value="Red"/>
                    </Style>
                </TextBox.Style>
                <TextBox.Template>
                    <ControlTemplate x:Uid ="txtagevals" TargetType="{x:Type TextBox}">
                        <Border Background="{TemplateBinding Background}"  
                    BorderBrush="Black" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5">
                            <ScrollViewer x:Name="PART_ContentHost"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="Text" Value="18">
                                <Setter Property="Background" Value="Green"/>
                            </Trigger>
                            <Trigger Property="Text" Value="">
                                <Setter Property="Background" Value="White"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </TextBox.Template>
            </TextBox>

Вы можете привязать gridview, как показано ниже, у меня все работает нормально:

<ListView Name="lstTest">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="" Width="100">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <TextBox x:Uid="txtagevals" x:Name="txtAge" Height="25" Width="80" BorderThickness="1" BorderBrush="Black" Text="{Binding Path=Age}">
                                        <TextBox.Style>
                                            <Style TargetType="{x:Type TextBox}">
                                                <Setter Property="Background" Value="Red"/>
                                            </Style>
                                        </TextBox.Style>
                                        <TextBox.Template>
                                            <ControlTemplate x:Uid ="txtagevals" TargetType="{x:Type TextBox}">
                                                <Border Background="{TemplateBinding Background}"  
                    BorderBrush="Black" BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="5">
                                                    <ScrollViewer x:Name="PART_ContentHost"/>
                                                </Border>
                                                <ControlTemplate.Triggers>
                                                    <Trigger Property="Text" Value="18">
                                                        <Setter Property="Background" Value="Green"/>
                                                    </Trigger>
                                                    <Trigger Property="Text" Value="">
                                                        <Setter Property="Background" Value="White"/>
                                                    </Trigger>
                                                </ControlTemplate.Triggers>
                                            </ControlTemplate>
                                        </TextBox.Template>
                                    </TextBox>
                                </DataTemplate>

                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
...