public class Lang(CultureInfo culture)
{
public CultureInfo Culture { get; set; } = culture;
public string FullName { get; set; } = culture.EnglishName + " / " + culture.NativeName;
public override bool Equals(object obj)
{
if (obj is Lang lang)
{
return Culture.LCID == lang.Culture.LCID;
}
else if (obj is CultureInfo culture)
{
return Culture.LCID == culture.LCID;
}
return Culture.Equals(obj);
}
public override int GetHashCode()
{
return 213191193 + EqualityComparer<CultureInfo>.Default.GetHashCode(Culture);
}
public override string ToString()
{
return FullName;
}
}
private Lang _Language;
private ObservableCollection<Lang> _Languages;
public Lang Language
{
get => _Language;
set
{
if (value == null) { return; }
_Language = value;
RaisePropertyChanged(nameof(Language));
}
}
public ObservableCollection<Lang> Languages
{
get => _Languages;
set
{
_Languages = value;
RaisePropertyChanged(nameof(Languages));
}
}
<ComboBox
ItemsSource="{Binding AppVM.LangVM.Languages,
Mode=OneWay,
UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding AppVM.LangVM.Language,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
/// <summary>
/// Selected Language
/// </summary>
public Lang Language
{
get => new(App.Language);
set
{
if (value == null) { return; }
if (App.Language.Equals(value.Culture)) { return; }
App.Language = value.Culture;
RaisePropertyChanged(nameof(Language));
}
}
/// <summary>
/// Language values list
/// </summary>
public ObservableCollection<Lang> Languages
{
get => _Languages;
set
{
_Languages = value;
RaisePropertyChanged(nameof(Languages));
}
}
<!-- Language select -->
<Controls:ComboBoxEx
Grid.Row="1"
Grid.Column="1"
Grid.ColumnSpan="3"
Margin="2,2,4,2"
Padding="10,5"
HorizontalAlignment="Right"
VerticalAlignment="Center"
ItemsSource="{Binding AppVM.LangVM.Languages,
Mode=OneWay,
UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding AppVM.LangVM.Language,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}" />
места на сервере много, но он жалуется на малое кол-во места