好的,所以我在App.xaml的Application.Resources中为Binding Color转换器添加了这段代码:
xmlns:converter="clr-namespace:FtpUploader2.Converters"
<converter:MessageTypeEnumToColor x:Key="MessageTypeEnumToColor"/>
我没有收到错误消息,程序编译得很好,它改变了我的消息元素上的不同颜色,直到我在代码中的一行添加了PrintMessage()函数。
<Label Content="{Binding Text}"
Background="{Binding MessageType, Converter={StaticResource MessageTypeEnumToColor}}"/>
将信息打印到wpf视图列表:
public void PrintMessage(string a_message, Model.Message.MsgType a_msgType = Model.Message.MsgType.Information)
{
Model.Message message = new Model.Message(a_message, a_msgType);
Messages.Insert(0, message);
}
我在应用程序中使用了PrintMessage功能很多次。现在到了我无法弄清楚它为什么会发生的部分。
在一个名为HandleUploadTabSelected()
的函数中PrintMessage("Failed to upload one or more accounts", Model.Message.MsgType.Error);
导致标题中的错误消息:
编辑:在测试迈克的建议之后,根本没有编译。添加错误1 XML中不存在标记“MessageTypeEnumToColor” namespace'clr-namespace:FtpUploader2.Converters'。第7行位置 10。
;assembly=FtpUploader2
这是MessageTypeEnumToColor的代码:
using FtpUploader2.Model;
namespace FtpUploader2.Converters
{
class MessageTypeEnumToColor : IValueConverter
{
#region IValueConverter Member
object IValueConverter.Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Message.MsgType tempMsg = (Message.MsgType)value;
Brush retval;
switch (tempMsg)
{
case Message.MsgType.Ok:
retval = Brushes.Green;
break;
case Message.MsgType.Warning:
retval = Brushes.Yellow;
break;
case Message.MsgType.Error:
retval = Brushes.Red;
break;
default:
retval = Brushes.White;
break;
}
return retval;
}
object IValueConverter.ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
}
答案 0 :(得分:0)
确保应用程序的目标框架(属性>应用程序>目标框架)与目标程序集的目标框架相同(例如.NET Framework 4.7.2)