1

我正在为我的项目设计 GUI。我需要做的是根据绑定源中的布尔值更改标签的颜色。但问题是我需要为绑定源没有这个的标签分配一个颜色(我不希望绑定源中有一个颜色属性)。

当 bool 为真否则为黑色时,如何处理使标签变为红色?

提前致谢。

4

4 回答 4

3

由于您无法直接绑定它们,因此您必须在任一侧创建一个额外的属性。您可以在(业务)对象中添加一个 Color 属性(您说过您不想要),这样就可以在表单/控件上添加一个属性,该属性绑定到您的(业务)对象上的属性。

更新

如果要向可以绑定的表单添加属性,请添加以下内容。

public bool MyPropertyToBindTo {
    get { return _myLabel.Color == Color.Red; }
    set { _myLabel.Color = value ? Color.Red : Color.Black; }
}

现在您可以将业务对象属性绑定到此属性,它应该可以工作。

于 2012-08-31T13:06:57.287 回答
2

您可以为此使用转换器。(我已经从多个来源复制/更新了这段代码,请原谅一些语法错误。)

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}}" />
于 2012-08-31T13:17:42.773 回答
1

如果您使用 Wpf,则可以使用 Converter

关于颜色和价值的链接:http ://www.c-sharpcorner.com/uploadfile/dpatra/value-converter-in-wpf-part-i/

于 2012-08-31T13:07:04.587 回答
0

只是不要将布尔属性绑定到控件,覆盖DataBinding事件,并在该事件处理程序中根据布尔变量设置Color你的。LabelDataBinding事件存在(至少部分地)供您放置对于传统数据绑定而言过于复杂的数据绑定逻辑。

于 2012-08-31T13:33:34.247 回答