Я пытаюсь создать статическое свойство, и единственный способ найти это - использовать DependencyProperty.
В моем классе созданы следующие поля:
public static readonly DependencyProperty UnreadMessagesProperty = DependencyProperty.Register("UnreadMessages", typeof(int), typeof(ErrorLog));
public int UnreadMessages
{
get
{
return (int)GetValue(ErrorLog.UnreadMessagesProperty);
}
set
{
SetValue(ErrorLog.UnreadMessagesProperty, value);
}
}
И это прекрасно компилируется, но когда я пытаюсь установить начальное значение UnreadMessages в конструкторе равным 0, используя следующий код:
public ErrorLog()
{
this.UnreadMessages = 0;
}
Я получаю следующее исключение
Exception has been thrown by the target of an invocation.
Error at object 'System.Windows.Data.Binding' in markup file 'Dashboard;component/main.xaml'.
И сообщение Внутреннего Исключения ниже:
Value cannot be null.
Parameter name: dp
И полный след стека внутреннего исключения:
at System.Windows.DependencyObject.SetupPropertyChange(DependencyProperty dp)
at System.Windows.DependencyObject.SetValue(DependencyProperty dp, Object value)
at Dashboard.ErrorLog.set_UnreadMessages(Int32 value) in ErrorLog.xaml.cs:line 67
at Dashboard.ErrorLog..ctor() in ErrorLog.xaml.cs:line 97
at Dashboard.ErrorLog..cctor() in ErrorLog.xaml.cs:line 33
Код доступа к единственному экземпляру:
public static readonly ErrorLog Instance = new ErrorLog();
То, что я пытаюсь сделать, - это иметь статическое свойство UnreadMessages, которое я могу связать в своем классе Main, чтобы я мог отображать, есть ли какие-либо непрочитанные сообщения об ошибках, о которых пользователь должен знать.
Я пытался использовать одноэлементный подход, но не могу связать ErrorLog.Instance.UnreadMessages.
Может ли кто-нибудь мне помочь?