我正在为我的项目设计 GUI。我需要做的是根据绑定源中的布尔值更改标签的颜色。但问题是我需要为绑定源没有这个的标签分配一个颜色(我不希望绑定源中有一个颜色属性)。
当 bool 为真否则为黑色时,如何处理使标签变为红色?
提前致谢。
我正在为我的项目设计 GUI。我需要做的是根据绑定源中的布尔值更改标签的颜色。但问题是我需要为绑定源没有这个的标签分配一个颜色(我不希望绑定源中有一个颜色属性)。
当 bool 为真否则为黑色时,如何处理使标签变为红色?
提前致谢。
由于您无法直接绑定它们,因此您必须在任一侧创建一个额外的属性。您可以在(业务)对象中添加一个 Color 属性(您说过您不想要),这样就可以在表单/控件上添加一个属性,该属性绑定到您的(业务)对象上的属性。
更新
如果要向可以绑定的表单添加属性,请添加以下内容。
public bool MyPropertyToBindTo {
get { return _myLabel.Color == Color.Red; }
set { _myLabel.Color = value ? Color.Red : Color.Black; }
}
现在您可以将业务对象属性绑定到此属性,它应该可以工作。
您可以为此使用转换器。(我已经从多个来源复制/更新了这段代码,请原谅一些语法错误。)
public class BoolToColorConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Color labelColor;
// Implement your conversion code here ...
return labelColor;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
// As far as I understood your question you
// will not need to convert back.
return DependencyProperty.UnsetValue;
}
}
然后您需要在您的 XAMLUserControl
或部件Window
中定义它Resources
(转换器是命名空间)。(在本例中,converter
映射到BoolToColorConverter
定义的命名空间。)
<UserControl.Resources>
<converter:BoolToColorConverter x:Key="boolToColor" />
</UserControl.Resources>
之后,您终于可以在您的 XAML 中使用它进行此绑定:
<Label Content="{Binding Path=YourBoundProperty, Converter={StaticResource boolToColor}}" />
如果您使用 Wpf,则可以使用 Converter
关于颜色和价值的链接:http ://www.c-sharpcorner.com/uploadfile/dpatra/value-converter-in-wpf-part-i/
只是不要将布尔属性绑定到控件,覆盖DataBinding
事件,并在该事件处理程序中根据布尔变量设置Color
你的。Label
该DataBinding
事件存在(至少部分地)供您放置对于传统数据绑定而言过于复杂的数据绑定逻辑。