Я обнаружил, что использую множество индивидуальных привязок к своему классу App для хранения свойств, и это привело меня к неисследуемому исключению stackoverflow.Теперь я решил перенести эти свойства в отдельный одноэлементный класс ApplicationInfo, но у меня возникли некоторые проблемы с привязкой.
Если я связываюсь напрямую со свойством члена моего класса, таким как CurrentUser, тогда оно работаетхорошо.Но когда я пытаюсь связать текст данных с этим классом, я получаю ошибки компилятора, и я уверен, что есть некоторые простые модификации, которые я упустил.
Я создал синглтон из этого класса, но теперь, когда япопробуйте скомпилировать я получаю сообщение об ошибке «Неизвестная ошибка сборки - ключ не может быть нулевым», и он указывает на мою привязку Datacontext для сообщения об ошибке.
Вот мой класс:
public class ApplicationInfo
{
private ApplicationInfo()
{
}
private static ApplicationInfo _Current = new ApplicationInfo();
public static ApplicationInfo Current
{
get { return _Current; }
}
#region Application Info Properties
private static Assembly _ExecutingAssembly = System.Reflection.Assembly.GetExecutingAssembly(); //holds a copy of this app's assembly info
public static String ApplicationName
{
get { return _ExecutingAssembly.ManifestModule.Name; }
}
public static String ApplicationNameTrimmed
{
get { return _ExecutingAssembly.ManifestModule.Name.TrimEnd('.', 'e', 'x'); }
}
public static String ApplicationPath
{
get { return _ExecutingAssembly.Location; }
}
public static String ApplicationVersion
{
get { return _ExecutingAssembly.GetName().Version.ToString(); }
}
public static DateTime ApplicationCompileDate
{
get { return File.GetCreationTime(Assembly.GetExecutingAssembly().Location); }
}
#endregion
private static Boolean _hasOpenWindows;
public static Boolean HasOpenWindows
{
get { return _hasOpenWindows; }
set { _hasOpenWindows = value; }
}
private static User _currentuser;
public static User CurrentUser
{
get { return _currentuser; }
set { _currentuser = value; }
}
private static Mantissa.DAL _datalayer;
public static Mantissa.DAL DataLayer
{
get { return _datalayer; }
set { _datalayer = value; }
}
private static string _connectionstring;
public static string ConnectionString
{
get { return _connectionstring; }
set { _connectionstring = value; }
}
}
Это работает:
`Title="{Binding Source={x:Static my:ApplicationInfo.ApplicationNameTrimmed}}"`
Это не так: (выбрасывает ключ не может быть нулевым сообщением)
DataContext="{Binding Source={x:Static my:ApplicationInfo.Current}}"
Но когда я помещаю то же свойство в мой класс приложения, это работает:
DataContext="{Binding Source={x:Static Application.Current}}"
так как мне это исправить?