I have developed a test application. The application contain one comboBox and one XML file. XML vale is getting bind with the ComboBox. Here I need to update the xml As per the selection in the ComboBox. There is an element in XML i.e <selected>Y.If the language is selected to English. Then the <selected> property should be Y for the selected language and for rest all languages the <selected> property should be 'N' ex: <selected>N. Below code I have tried . Some one please help me on this.
What I have tried:
This is GeneralViewModel.cs
public IReadOnlyList<Model.Language> languages { get; } = LoadLanguages();
private static IReadOnlyList<Model.Language> LoadLanguages()
{
XDocument doc = XDocument.Load("Languages.xml");
return doc.Root.Elements("LANGUAGE").Select(el => new Model.Language(el)).ToList();
}
private Model.Language _selectedlanguage;
public Model.Language selectedlanguage
{
get { return _selectedlanguage; }
set
{
if (value != _selectedlanguage)
{
_selectedlanguage = value;
RaisePropertyChanged(nameof(selectedlanguage));
}
}
}
This is the GeneralView.xaml
<ComboBox x:Name="cmName" Grid.Row="2" Grid.Column="1" Height="30" Width="150" ItemsSource="{Binding Path=languages}" SelectedValue="{Binding Path=selectedlanguage}" DisplayMemberPath="Name"/>
This is Languages.cs
namespace Clearcore2.VerticalApplications.Settings.Model
{
public class Language
{
public Language(XElement element)
{
Name = (string)element.Element("Name");
CultureCode = (string)element.Element("CULTURE");
Selected = (string)element.Element("Selected");
}
public string Name { get; set; }
public string CultureCode { get; set; }
public string Selected { get; set; }
}
}
And This is Languages.xml(So here if we select English in the comboBox,Except English rest for all languages selected value should be 'N' i.e <selected>N)
<?xml version="1.0" encoding="utf-8" ?>
<LANGUAGES>
<LANGUAGE>
<Name>English</Name>
<Culture>en-US</Culture>
<Selected>Y</Selected>
</LANGUAGE>
<LANGUAGE>
<Name>German</Name>
<Culture>de-DE</Culture>
<Selected>Y</Selected>
</LANGUAGE>
<LANGUAGE>
<Name>Chinesh (Simplified)</Name>
<Culture>zh-CN</Culture>
<Selected>Y</Selected>
</LANGUAGE>
<LANGUAGE>
<Name>Spanish</Name>
<Culture>es-ES</Culture>
<Selected>Y</Selected>
</LANGUAGE>
</LANGUAGES>