如何使用依赖项 属性 更改背景颜色
how to change background color using dependency property
我是 wpf 的新手,我正在尝试学习依赖性 属性。
我试图使用来自另一个文本框的文本更改文本框的背景颜色。我可以使用转换器来完成,但我想使用依赖项 属性 来实现它。
这是 xaml 代码
<TextBox Name="setbox" Width="150" Height="50" FontWeight="DemiBold" FontSize="25" Canvas.Top="50" Canvas.Left="10"
Background="{Binding ElementName=statusbar,Path=Text,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource converter1}}"/>
这是我的转换器代码
public class backgroundColourConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo
culture)
{
var backColor = Brushes.Transparent;
//changes the colour of font to White if the input to the statusbar is "state1"
if (value != null && value.ToString().Equals("state1"))
{
backColor = Brushes.White;
}
//changes the colour of font to Lavender if the input to the statusbar is "state2"
else if (value != null && value.ToString().Equals("state2"))
{
backColor = Brushes.Lavender;
}
//changes the colour of font to Ivory if the input to the statusbar is "state3"
else if (value != null && value.ToString().Equals("state3"))
{
backColor = Brushes.Ivory;
}
//changes the colour of font to Green if the input to the statusbar is "state4"
else if (value != null && value.ToString().Equals("state4"))
{
backColor = Brushes.Green;
}
return backColor;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
这工作正常,但我想使用依赖项 属性 来实现它。
提前致谢
如果您创建自己的 TextBox 控件,您可以添加一个新的 属性 BackgroundColorText 并从您在其中键入颜色名称的另一个 TextBox 中设置它的值。在 setter 的 BackgroundColorText 中,您可以设置控件背景颜色。
但这只是修改背景颜色有点矫枉过正。正确的做法是值转换器,恕我直言。
我是 wpf 的新手,我正在尝试学习依赖性 属性。 我试图使用来自另一个文本框的文本更改文本框的背景颜色。我可以使用转换器来完成,但我想使用依赖项 属性 来实现它。 这是 xaml 代码
<TextBox Name="setbox" Width="150" Height="50" FontWeight="DemiBold" FontSize="25" Canvas.Top="50" Canvas.Left="10"
Background="{Binding ElementName=statusbar,Path=Text,UpdateSourceTrigger=PropertyChanged,Converter={StaticResource converter1}}"/>
这是我的转换器代码
public class backgroundColourConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo
culture)
{
var backColor = Brushes.Transparent;
//changes the colour of font to White if the input to the statusbar is "state1"
if (value != null && value.ToString().Equals("state1"))
{
backColor = Brushes.White;
}
//changes the colour of font to Lavender if the input to the statusbar is "state2"
else if (value != null && value.ToString().Equals("state2"))
{
backColor = Brushes.Lavender;
}
//changes the colour of font to Ivory if the input to the statusbar is "state3"
else if (value != null && value.ToString().Equals("state3"))
{
backColor = Brushes.Ivory;
}
//changes the colour of font to Green if the input to the statusbar is "state4"
else if (value != null && value.ToString().Equals("state4"))
{
backColor = Brushes.Green;
}
return backColor;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
这工作正常,但我想使用依赖项 属性 来实现它。 提前致谢
如果您创建自己的 TextBox 控件,您可以添加一个新的 属性 BackgroundColorText 并从您在其中键入颜色名称的另一个 TextBox 中设置它的值。在 setter 的 BackgroundColorText 中,您可以设置控件背景颜色。
但这只是修改背景颜色有点矫枉过正。正确的做法是值转换器,恕我直言。