XamlParseException после удаления настроек (app.config)
Я получаю это исключение после удаления настроек в моем проекте. Это настройки по умолчанию, которые используют пространство имен ProjectName.Properties. Также я удалил app.config из проекта. Почему я это сделал: мне добавили сериализацию для чтения моего settings.xml вместо старой версии.
Я думаю, что эти настройки определены где-то, но я не знаю этого.
Это текст исключения, если это поможет (переведено в гугл переводчик):
Вызов конструктора для типа " GnomeExtractor.MainWindow ", удовлетворяющий указанным ограничениям связывания, привел к исключению."Номер строки"6"и позиция в"9 ".
Я удалил эти файлы вручную:
Settings.settings
Settings.Desighner.cs
app.config
Мой код MainWindow.xaml:
<Window ResxExtension.DefaultResxName="GnomeExtractor.Windows.MainWindow" Language="{UICulture}"
x:Class="GnomeExtractor.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:GnomeExtractor"
xmlns:dg="http://schemas.microsoft.com/netfx/2007/xaml/presentation"
Title="Gnome Extractor" Height="500" Width="1000" MinHeight="500" MinWidth="1000" Loaded="Window_Loaded" Closing="Window_Closing" Icon="/GnomeExtractor;component/Resources/GX icon.ico">
<Window.Resources>
<local:CellBackgroundColorConverter x:Key="CellBackgroundColorConverter" />
<local:CellFocusableConverter x:Key="CellFocusableConverter" />
<local:ColumnIndexToWidthConverter x:Key="ColumnIndexToWidthConverter" />
<Style TargetType="DataGrid">
<Setter Property="ItemsSource" Value="{Binding}" />
<Setter Property="CanUserDeleteRows" Value="False" />
<Setter Property="CanUserAddRows" Value="False" />
<Setter Property="SelectionUnit" Value="Cell" />
<Setter Property="RowHeaderWidth" Value="30" />
<Setter Property="Margin" Value="5" />
<Setter Property="SelectionMode" Value="Single" />
<Setter Property="FrozenColumnCount" Value="8" />
<Setter Property="MaxColumnWidth" Value="45" />
<Setter Property="CanUserResizeColumns" Value="False" />
<Setter Property="CanUserResizeRows" Value="False" />
</Style>
<Style TargetType="DataGridColumnHeader">
<Setter Property="ToolTip" Value="" />
<EventSetter Event="ToolTipOpening" Handler="DataGridColumnHeaderProfessions_ToolTipOpening" />
<Setter Property="VerticalContentAlignment" Value="Bottom" />
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}" Margin="5">
<TextBlock.LayoutTransform>
<RotateTransform Angle="-90" />
</TextBlock.LayoutTransform>
</TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<Style TargetType="DataGridCell">
<Setter Property="Background">
<Setter.Value>
<MultiBinding Converter="{StaticResource CellBackgroundColorConverter}" Mode="OneWay">
<Binding Path="Row[4]" />
<Binding Path="Row[5]" />
<Binding RelativeSource="{RelativeSource Self}" Path="Column.Header" />
</MultiBinding>
</Setter.Value>
</Setter>
<Setter Property="Foreground" Value="Black" />
<Setter Property="Focusable" Value="{Binding Converter={StaticResource CellFocusableConverter}, RelativeSource={RelativeSource Self}, Path=Column.Header}"/>
<EventSetter Event="PreviewMouseDown" Handler="DataGridCell_PreviewMouseDown" />
</Style>
<Style TargetType="DataGridRowHeader">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="DataGridRowHeader_PreviewMouseLeftButtonDown" />
</Style>
<Style TargetType="Image">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.25" />
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
Если я удаляю это, я получаю ошибку в строке 5 сейчас, но следующий код - мои стили, и я могу спокойно удалить это, и это не имеет никакого эффекта.
Я откатил свой проект до рабочей версии и получил эту ошибку при удалении app.config
UPD: рабочий код моего конструктора MainWindow
public MainWindow()
{
// При первом запуске выставляем культуру установленную в компе, при последующих - предыдущую
// First run changing localization same like in computer
if (Settings.Default.ProgramLanguage == "")
{
string lang = "en-US";
if (CultureInfo.InstalledUICulture.TwoLetterISOLanguageName == "ru")
if (File.Exists("ru-RU\\GnomeExtractor.resources.dll")) lang = "ru-RU";
CultureManager.UICulture = new CultureInfo(lang);
Settings.Default.ProgramLanguage = lang;
}
else
CultureManager.UICulture = new CultureInfo(Settings.Default.ProgramLanguage);
CultureManager.UICultureChanged += new EventHandler(CultureManager_UICultureChanged);
resourceManager = new ResourceManager("GnomeExtractor.Resources.Loc", Assembly.GetExecutingAssembly());
//if (!File.Exists("loclib.dll")) MessageBox.Show("File loclib.dll not found, please reinstall the program");
//if (!File.Exists("Gnomoria.exe")) MessageBox.Show("File Gnomoria.exe not found, please install the program in game folder");
InitializeComponent();
UpdateLanguageMenus();
//Загружаем настроечки с прошлого запуска
//Loading settings
this.WindowState = Settings.Default.LastRunWindowState;
this.Left = Settings.Default.LastRunLocation.X;
this.Top = Settings.Default.LastRunLocation.Y;
this.Width = Settings.Default.LastRunSize.Width;
this.Height = Settings.Default.LastRunSize.Height;
this.isCheatsOn = Settings.Default.LastRunCheatMode;
this.isLabelsVertical = Settings.Default.LastRunIsLablesVertical;
this.tabControl.SelectedIndex = Settings.Default.TabItemSelected;
this.isAutoUpdateEnabled = Settings.Default.IsAutoUpdateEnabled;
ControlStates();
}
Небольшое объяснение: Language={UICulture} + привязка к классу {Resx value (XAML) и CultureManager (код C#) - это библиотека для локализации с использованием файлов Resx.
UpdateLanguageMenus () и ControlStates() только для элемента управления IsEnable.
После удаления этих файлов я заменил все настройки. По умолчанию. в мой новый класс настроек (используя сериализацию XML) и просто добавил этот код
// Read settings from Xml file
settings.ReadXml();
/UPD
Если вам нужна дополнительная информация, спросите меня, пожалуйста.
1 ответ
Woot, я нашел проблему, это хороший совет: /questions/3487104/prilozhenienet-ne-mozhet-zapustitsya-i-poluchit-isklyuchenie-xamlparseexception/3487120#3487120
Мои настройки. Поля.ProgramLanguage был нулевым, но не ""