我正在尝试根据另一个文本框的输入更改文本框的背景,例如当我将“process”输入到一个文本框中时,另一个文本框的背景应该更改为绿色。 xmal代码是
<Window
x:Name="mywindow"
x:Class="labelsetboxreadbox.MainWindow"
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:labelsetboxreadbox"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:StaffNameToBackgroundColourConverter x:Key="converter1"/>
</Window.Resources>
<Grid>
<Label Name="label" Width="150" Height="50" Margin="15,94,352,175" Background="Black"/>
<TextBox Name="setbox" Width="150" Height="50" Margin="167,95,200,174" Background="{Binding ElementName=mywindow,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource converter1}}" />
<TextBox Name="readbox" Width="150" Height="50" IsReadOnly="True" Margin="318,95,49,174" Background="Aqua"/>
<TextBox Name="statusbar" Width="150" Height="50" VerticalAlignment="Bottom" HorizontalAlignment="Right" TextChanged="statusbar_TextChanged"/>
</Grid>
</Window>
答案 0 :(得分:1)
我正在通过触发器共享示例。使用Converter,您也可以使用Element Name属性传递参数。
<StackPanel>
<TextBlock Height="20" Name="colorTb" >
<TextBlock.Style>
<Style TargetType="TextBlock">
<Setter Property="Background" Value="Red"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=textTb, Path=Text}" Value="Process">
<Setter Property="Background" Value="Green"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
<TextBox Height="20" Name="textTb" Text="xyz" >
</TextBox>
</StackPanel>
这是转换器
<StackPanel>
<StackPanel.Resources>
<converters:ColorConverter x:Key="converter1"></converters:ColorConverter>
</StackPanel.Resources>
<TextBox Height="20" Name="colorTb" Background="{Binding ElementName=textTb, Path=Text ,Converter={StaticResource converter1}}" >
</TextBox>
<TextBox Height="20" Name="textTb" Text="xyz" >
</TextBox>
</StackPanel>
和转换器代码一样
public class ColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var backColor = Brushes.Transparent;
if (value!=null && value.ToString().Equals("Process"))
{
backColor = Brushes.Green;
}
return backColor;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}