Я обнаружил, что использовал множество индивидуальных привязок к классу App для хранения свойств, и это привело меня к исключаемому исключению stackoverflow. Я решил, что я перенесу эти свойства в отдельный класс ApplicationInfo, но у меня возникают проблемы с привязкой.
Если я привязываю непосредственно к свойству-члену моего класса, например CurrentUser, тогда он работает нормально. Но когда я пытаюсь связать datacontext с этим классом, я получаю ошибки компилятора, и я уверен, что есть некоторые простые изменения, которые я пропустил.
Я создал синглтон из этого класса, но теперь, когда я пытаюсь скомпилировать, я получаю сообщение об ошибке "Неизвестная ошибка сборки - ключ не может быть пустым" и указывает на привязку к сообщению 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 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}}"`
Это не означает: (выбрасывает ключ не может быть null msg)
DataContext="{Binding Source={x:Static my:ApplicationInfo.Current}}"
Но когда я помещаю одно и то же свойство в свой класс App, это работает:
DataContext="{Binding Source={x:Static Application.Current}}"
так как я могу это исправить?