Я искал this article, но у меня проблемы с сохранением перечисленного значения в настройках.Сохранение выбора переключателя в настройках
Я создал следующее перечисление
public enum FType
{
None,
Delimited,
FixedWidth,
XML
};
У меня есть выбор кнопки радио работает хорошо, но теперь я хочу, чтобы сохранить выбранный параметр в настройках, но там не появляется, чтобы быть возможностью хранить перечислимая переменная.
Я предположил, что могу преобразовать перечисление в строку, а затем преобразовать обратно, но, будучи немного нубом, когда дело доходит до WPF, я не совсем уверен, с чего начать.
Вот код, который я генерироваться до сих пор:
app.xaml
<Application x:Class="Widget.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:properties="clr-namespace:Widget.Properties"
StartupUri="Window1.xaml"
Exit="Application_Exit">
<Application.Resources>
<properties:Settings x:Key="Settings" />
</Application.Resources>
</Application>
App.xaml.cs
public partial class App : Application
{
private void Application_Exit(object sender, ExitEventArgs e)
{
Widget.Properties.Settings.Default.Save();
}
}
Windows.xaml
<Window x:Class="Widget.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:Widget"
Title="Window1" Height="85" Width="300">
<Window.Resources>
<local:EnumBooleanConverter x:Key="enumBooleanConverter"/>
</Window.Resources>
<Grid>
<StackPanel>
<RadioButton GroupName="FileType" Content="Delimited" IsChecked="{Binding Path=Default.FileType, Mode=TwoWay, Converter={StaticResource enumBooleanConverter}, ConverterParameter=Delimited}" />
<RadioButton GroupName="FileType" Content="Fixed Width" IsChecked="{Binding Path=Default.FileType, Mode=TwoWay, Converter={StaticResource enumBooleanConverter}, ConverterParameter=FixedWidth}"/>
<RadioButton GroupName="FileType" Content="XML" IsChecked="{Binding Path=Default.FileType, Mode=TwoWay, Converter={StaticResource enumBooleanConverter}, ConverterParameter=XML}"/>
</StackPanel>
</Grid>
</Window>
Converter.cs
public class EnumBooleanConverter : IValueConverter
{
public EnumBooleanConverter()
{
}
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
if (Enum.IsDefined(value.GetType(), value) == false)
return DependencyProperty.UnsetValue;
object parameterValue = Enum.Parse(value.GetType(), parameterString);
return parameterValue.Equals(value);
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
string parameterString = parameter as string;
if (parameterString == null)
return DependencyProperty.UnsetValue;
return Enum.Parse(targetType, parameterString);
}
#endregion
}
Я не уверен, как изменить тип свойства «FileType», поскольку конструктор настроек предоставляет только стандартные типы в списке, а FType - это мое собственное перечисление, его нет. Я могу видеть, как изменить настройки. Designer.cs можно редактировать, но это автоматически сгенерированный файл и будет перезаписан. Пока я не получу выбранную опцию, я не буду знать, работает ли статический или динамический ресурс (он компилируется с обоими параметрами, поэтому он обязан работать.; O) Спасибо за помощь. – TeamWild
Хорошо .. Сделайте так: В визуальной студии Щелкните правой кнопкой мыши свой проект >> Свойства >> Настройки. Здесь у вас есть свойство 'FileType', верно? Теперь в раскрывающемся списке «Тип» выберите «Обзор» и введите свое имя в формате [namespace]. [Class]. И вы сделали! В противном случае вы также можете вручную отредактировать файл: не 'Settings.Designer.cs' (который автоматически сгенерирован - как вы сказали), а файл' Settings.settings'. Это не сгенерировано автоматически.Надеюсь, это поможет :) – mg007
Mihir. Вы абсолютная звезда! Благодарю. – TeamWild