2017-10-25 16 views
-2

다른 텍스트 상자의 입력을 기반으로 텍스트 상자의 배경을 변경하려고합니다. 예를 들어 "프로세스"를 한 텍스트 상자에 입력 할 때 다른 텍스트 상자의 배경 녹색으로 바뀌어야합니다. 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> 

그리고 변환기 코드 함께 StackOverflow의에, 안녕하세요

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(); 
    } 
} 
+0

Ramankingdom에게 감사드립니다. 이것은 매력처럼 작동했습니다. 명성 – jithin

+0

답변으로 표시하는 것을 잊어 버렸습니다. – Ramankingdom