样式定位文本块时WPF绑定错误,ValidationError包含文本块

时间:2013-11-13 10:13:04

标签: wpf

我正在使用MVVM架构制作WPF应用程序。对于每个站点,数据库将前景保留为背景颜色值,在从数据库映射时,会创建2个与这些颜色对应的System.Windows.Media.Brush新实例。

viewmodel然后像这样包装所选网站:

public Brush TextBrush
{
    get
    {
        if (StudyCentre == null)
        {
            return _defaultText;
        }
        return StudyCentre.TextColour;
    }
}

我也在为验证错误定义一种样式,我认为这可能与错误相关:

<Style x:Key="errorStyle" TargetType="TextBlock">
    <Setter Property="FontStyle" Value="Italic" />
    <Setter Property="Foreground" Value="Red" />
    <Setter Property="HorizontalAlignment" Value="Right" />
    <Setter Property="Margin" Value="0,1" />
</Style>
<DataTemplate DataType="{x:Type ValidationError}">
    <TextBlock Style="{StaticResource errorStyle}" Text="{Binding Path=ErrorContent}" />
</DataTemplate>

并像这样设置前景色:

<Style TargetType="TextBlock" >
    <Setter Property="Foreground" Value="{Binding Path=TextBrush, Mode=OneWay}" />
</Style>

但是,输出充满了以下错误(即每个验证内容控件都需要一个

System.Windows.Data Error: 40 : BindingExpression path error: 'TextBrush' property not found on 'object' ''ValidationError' (HashCode=26199139)'. BindingExpression:Path=TextBrush; DataItem='ValidationError' (HashCode=26199139); target element is 'TextBlock' (Name=''); target property is 'Foreground' (type 'Brush')

页面显示正常(我不希望前景色应用于错误内容控件中的文本块),但我想避免此绑定错误。

有没有办法排除错误内容控件,同时仍然适用于文本框而不诉诸命名样式?感谢。

1 个答案:

答案 0 :(得分:1)

我不相信您可以从“输出”窗口中删除该条目,但是可以通过设置 将其从System.Windows.Data Error“降级”为System.Windows.Data Warning有效FallbackValue

<Style TargetType="{x:Type TextBlock}">
    <Setter Property="Foreground" 
        Value="{Binding Path=TextBrush, FallbackValue=Black}" />
</Style>