WPF - 突出显示基于内容的文本框

时间:2014-10-16 17:49:13

标签: wpf mvvm

我正在学习WPF / MVVM,我有一个组合框,可根据所选的组合框值更新多个文本框。我想要做的是突出显示一些thext框,如果它们包含一定的值。文本框不会获得焦点并且是只读的。使用MVVM的最佳方法是什么?

修改 感谢您使用Trigger的想法。我实际上是尝试根据同一文本框的值设置文本框的边框颜色。根据下面提供的信息,这是我的文本框的样子,但是当文本框中显示“交易”一词时,边框不会改变。我是否错误地引用了某些内容?

<TextBox Height="23" HorizontalAlignment="Left" VerticalAlignment="Top" Width="170" Grid.Column="4" Grid.Row="2" Margin="4,2,0,0" IsEnabled="False"  DataContext="{Binding SelectedTDetails}" Text="{Binding CType}" Background="WhiteSmoke" Padding="1,0,0,0" >
    <TextBox.Style>
        <Style TargetType="TextBox">
            <Style.Triggers>
                <Trigger Property="Text" Value="Transaction">
                    <Setter Property="BorderBrush" Value="LightGreen" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

1 个答案:

答案 0 :(得分:1)

这是使用TextBox中的触发器

的示例

使用此示例时通过在TextBox中键入项目2或从ComboBox

中选择它来触发相同的操作
<StackPanel>
    <ComboBox x:Name="combo">
        <ComboBoxItem>item 1</ComboBoxItem>
        <ComboBoxItem>item 2</ComboBoxItem>
    </ComboBox>
    <TextBox Text="{Binding SelectedItem.Content,ElementName=combo}">
        <TextBox.Style>
            <Style TargetType="TextBox">
                <Style.Triggers>
                    <Trigger Property="Text"
                             Value="item 2">
                        <Setter Property="Background"
                                Value="LightGreen" />
                    </Trigger>
                </Style.Triggers>
            </Style>
        </TextBox.Style>
    </TextBox>
</StackPanel>

在上面的示例中,TextBox绑定到ComboBox的选定项目(仅用于模拟应用程序的行为)

TextBox样式中的触发器查看Text属性是否包含第2项,它会更改TextBox的背景颜色以模拟突出显示

这只是关于触发器的基本概念,您可以利用您的创造力来实现所需的突出显示行为,可能涉及闪烁的颜色,动画大小等。