Commit a0fa2db4 authored by Kad Venku's avatar Kad Venku

Updated Editor To load Data To UI

parent 04fee919
......@@ -258,4 +258,5 @@ paket-files/
# Python Tools for Visual Studio (PTVS)
__pycache__/
*.pyc
\ No newline at end of file
*.pyc
/test
......@@ -5,27 +5,50 @@ VisualStudioVersion = 15.0.27703.2042
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "eaw-texteditor", "eaw-texteditor\eaw-texteditor.csproj", "{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "translation", "translation", "{2329420A-3496-4494-B6D3-6FC1D91BF74A}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ts.translation", "..\yvaw-translationmanifest\ts.translation\ts.translation.csproj", "{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Debug|Any CPU.ActiveCfg = Debug|x86
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Debug|x64.ActiveCfg = Debug|x64
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Debug|x64.Build.0 = Debug|x64
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Debug|x86.ActiveCfg = Debug|x86
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Debug|x86.Build.0 = Debug|x86
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Release|Any CPU.ActiveCfg = Release|x86
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Release|x64.ActiveCfg = Release|x64
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Release|x64.Build.0 = Release|x64
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Release|x86.ActiveCfg = Release|x86
{4105FDC3-AEAF-4E80-8046-3DD34C3E3F2E}.Release|x86.Build.0 = Release|x86
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Debug|x64.ActiveCfg = Debug|x64
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Debug|x64.Build.0 = Debug|x64
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Debug|x86.ActiveCfg = Debug|x86
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Debug|x86.Build.0 = Debug|x86
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Release|Any CPU.Build.0 = Release|Any CPU
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Release|x64.ActiveCfg = Release|x64
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Release|x64.Build.0 = Release|x64
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Release|x86.ActiveCfg = Release|Any CPU
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{1FD1FC67-71CE-4C2B-A552-2D16D9B3629A} = {2329420A-3496-4494-B6D3-6FC1D91BF74A}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {039DB769-A2FB-4F52-B745-8AFE5FF4E7B3}
SolutionGuid = {F25B959D-DE66-4AEB-A3F2-D71C650F5912}
EndGlobalSection
EndGlobal
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<s:Boolean x:Key="/Default/CodeInspection/CodeAnnotations/NamespacesWithAnnotations/=ts_002Etranslation_002EAnnotations/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1"/>
</startup>
</configuration>
\ No newline at end of file
</configuration>
<UserControl x:Class="eaw_texteditor.ObservableTranslationDataHolder"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</UserControl>
\ No newline at end of file
namespace eaw_texteditor
{
public partial class ObservableTranslationDataHolder
{
public ObservableTranslationDataHolder()
{
InitializeComponent();
}
}
}
\ No newline at end of file
......@@ -8,21 +8,17 @@
// </auto-generated>
//------------------------------------------------------------------------------
namespace eaw_texteditor.Properties
{
namespace eaw_texteditor.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
{
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.7.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default
{
get
{
public static Settings Default {
get {
return defaultInstance;
}
}
......
......@@ -6,14 +6,18 @@
xmlns:Controls="clr-namespace:MahApps.Metro.Controls;assembly=MahApps.Metro"
xmlns:local="clr-namespace:eaw_texteditor"
xmlns:iconPacks="http://metro.mahapps.com/winfx/xaml/iconpacks"
xmlns:serializable="clr-namespace:ts.translation.data.definitions.serializable;assembly=ts.translation"
xmlns:observables="clr-namespace:ts.translation.data.holder.observables;assembly=ts.translation"
mc:Ignorable="d"
Title="Star Wars: Empire at War - Text Editor" Height="450" Width="800" WindowStartupLocation="CenterScreen" ResizeMode="CanResizeWithGrip"
BorderBrush="{DynamicResource AccentColorBrush}"
BorderThickness="1"
SaveWindowPosition="True" Icon="/eaw-texteditor;component/eaw-icon.ico" MinWidth="800" MinHeight="600" VerticalAlignment="Bottom">
SaveWindowPosition="True" Icon="/eaw-texteditor;component/eaw-icon.ico" MinWidth="800" MinHeight="600" VerticalAlignment="Bottom" Loaded="MetroWindow_Loaded">
<Controls:MetroWindow.RightWindowCommands>
<Controls:WindowCommands>
<Button Content="settings" />
<Button x:Name="_importButton" Content="{iconPacks:FontAwesome FileImportSolid}" ToolTip="Import from file ..." Click="_importExecuteButton_Click"/>
<Button x:Name="_exportButton" Content="{iconPacks:FontAwesome FileExportSolid}" ToolTip="Export to file ..." Click="_exportExecuteButton_Click"/>
<Button x:Name="_settingsButton" Content="{iconPacks:FontAwesome CogSolid}" ToolTip="Settings ..." Click="_settingsExecuteButton_Click"/>
</Controls:WindowCommands>
</Controls:MetroWindow.RightWindowCommands>
<TabControl x:Name="_mainBoxTabControl" Margin="0">
......@@ -27,16 +31,15 @@
<RowDefinition Height="3*"/>
<RowDefinition Height="1*" MinHeight="150"/>
</Grid.RowDefinitions>
<ScrollViewer Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
<DataGrid x:Name="_basicEditorDataGrid" AutoGenerateColumns="False" Controls:ScrollViewerHelper.IsHorizontalScrollWheelEnabled="True" CanUserReorderColumns="False" Controls:DataGridHelper.EnableCellEditAssist="True">
<!--<ScrollViewer Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">-->
<DataGrid x:Name="_basicEditorDataGrid" Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="0" BindingGroup="{Binding ObservableTranslationData}" AutoGenerateColumns="False" CanUserReorderColumns="False" SelectionUnit="FullRow" MouseDoubleClick="_basicEditorDataGrid_OnDoubleClick" EnableColumnVirtualization="True" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{x:Null}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Text Key" IsReadOnly="True"/>
<DataGridTextColumn Binding="{x:Null}" CanUserReorder="False" ClipboardContentBinding="{x:Null}" Header="Translation" IsReadOnly="True"/>
<DataGridHyperlinkColumn Binding="{x:Null}" CanUserSort="False" CanUserReorder="False" ContentBinding="{x:Null}" ClipboardContentBinding="{x:Null}" Header="Actions" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Key}" CanUserReorder="False" Header="Text Key" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding Value}" CanUserReorder="False" Header="Translation" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
</ScrollViewer>
<GroupBox Name="_searchFormGroupBox" Grid.Column="0" Grid.Row="1" Header="Search">
<!--</ScrollViewer>-->
<GroupBox x:Name="_searchFormGroupBox" Grid.Column="0" Grid.Row="1" Header="Search">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
......@@ -45,26 +48,46 @@
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<TextBox x:Name="_searchBox" Grid.Column="0" Grid.Row="0" VerticalAlignment="Top" Grid.ColumnSpan="3" Margin="0,2,10,0" Padding="0" />
<CheckBox Content="Search keys" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3"/>
<CheckBox Content="Search translation" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3"/>
<CheckBox x:Name="_enableAdvancedSearchCheckBox" Content="Enable advanced search options" Grid.Column="0" Grid.Row="3" Grid.ColumnSpan="3" IsChecked="{Binding Path=IsAdvancedSearchCheckBoxChecked, Mode=TwoWay}" Checked="AdvancedSearchCheckBoxCheckedChanged" Unchecked="AdvancedSearchCheckBoxCheckedChanged"/>
<Grid Grid.Column="3" Grid.Row="0" Height="30" MinHeight="30" MaxHeight="30" VerticalAlignment="Top">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="30"/>
<ColumnDefinition Width="35"/>
<ColumnDefinition Width="30"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<Button Grid.Column="0" Grid.Row="0" Content="{iconPacks:FontAwesome ChevronLeftSolid}" Margin="0,0,5,0" ToolTip="Previous result" IsEnabled="False"/>
<Button x:Name="_searchExecuteButton" Grid.Column="1" Grid.Row="0" Content="{iconPacks:FontAwesome SearchSolid}" ToolTip="Find" IsEnabled="False" Click="_searchExecuteButton_Click"/>
<Button Grid.Column="2" Grid.Row="0" Content="{iconPacks:FontAwesome ChevronRightSolid}" Margin="5,0,0,0" ToolTip="Next result" IsEnabled="False"/>
</Grid>
</Grid>
</GroupBox>
<GroupBox Name="_advancedSearchFormGroupBox" Grid.Column="1" Grid.Row="1" Header="Advanced Search">
<GroupBox Name="_advancedSearchFormGroupBox" Grid.Column="1" Grid.Row="1" Header="Advanced Search" IsEnabled="False">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="1*"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
<RowDefinition Height="30"/>
</Grid.RowDefinitions>
<CheckBox x:Name="_matchCaseCheckBox" Content="Match case" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3"/>
<CheckBox x:Name="_matchWordCheckBox" Content="Match word" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="3"/>
<CheckBox x:Name="_regExSearch" Content="RegEx Search" Grid.Column="0" Grid.Row="2" Grid.ColumnSpan="3"/>
</Grid>
</GroupBox>
</Grid>
......
using MahApps.Metro.Controls;
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Forms;
using System.Windows.Input;
using eaw_texteditor.shared.common.util.ui;
using eaw_texteditor.shared.data.main;
using MahApps.Metro.Controls;
using ts.translation;
using ts.translation.common.typedefs;
using ts.translation.common.util.observable;
using ts.translation.data.holder.observables;
namespace eaw_texteditor.client.ui.main
{
......@@ -7,9 +18,83 @@ namespace eaw_texteditor.client.ui.main
/// </summary>
public partial class MainWindow : MetroWindow
{
private static bool IsInSetup = true;
private MainWindowData _formData { get; set; }
public MainWindow()
{
InitializeComponent();
ImportFormData(new MainWindowData());
}
private void MetroWindow_Loaded(object sender, RoutedEventArgs e)
{
IsInSetup = false;
}
internal void ImportFormData(MainWindowData data)
{
_formData = data;
DataContext = data;
}
private void _searchExecuteButton_Click(object sender, RoutedEventArgs e)
{
Console.Write("Search executed!");
}
private void AdvancedSearchCheckBoxCheckedChanged(object sender, RoutedEventArgs e)
{
Console.WriteLine($"Stuff changed! {_formData.IsAdvancedSearchCheckBoxChecked}");
_advancedSearchFormGroupBox.IsEnabled = _formData.IsAdvancedSearchCheckBoxChecked;
_formData.ObservableTranslationDataHolder.Add(new ObservableTranslationData($"{Guid.NewGuid()}", "Value"));
Random rnd = new Random();
int index = rnd.Next(0, _formData.ObservableTranslationDataHolder.Count);
_formData.ObservableTranslationDataHolder[index].Value += "EDIT!";
}
private void Row_DoubleClick(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("TEST");
}
private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
}
private void _translationDataGridRow_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
Console.WriteLine("TEST");
}
private void _settingsExecuteButton_Click(object sender, RoutedEventArgs e)
{
}
private void _basicEditorDataGrid_OnDoubleClick(object sender, MouseButtonEventArgs e)
{
DependencyObject source = (DependencyObject)e.OriginalSource;
DataGridRow row = UiUtility.TryFindParent<DataGridRow>(source);
if (row == null) return;
Console.WriteLine("Click Event!");
e.Handled = true;
}
private void _importExecuteButton_Click(object sender, RoutedEventArgs e)
{
PGTEXTS.LoadFromFile("I:\\Workspace\\eaw-texteditor\\test\\TranslationManifest.xml");
_formData.ObservableTranslationDataHolder = ObservableTranslationUtility.GetTranslationDataAsObservable();
_basicEditorDataGrid.ItemsSource = _formData.ObservableTranslationDataHolder;
}
private void _exportExecuteButton_Click(object sender, RoutedEventArgs e)
{
PGTEXTS.SaveToFile("I:\\Workspace\\eaw-texteditor\\test\\export");
PGTEXTS.SaveToFile("I:\\Workspace\\eaw-texteditor\\test\\export", TSFileTypes.FileTypeDat);
}
}
}
......@@ -8,10 +8,11 @@
<OutputType>WinExe</OutputType>
<RootNamespace>eaw_texteditor</RootNamespace>
<AssemblyName>eaw-texteditor</AssemblyName>
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
<WarningLevel>4</WarningLevel>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
<DebugSymbols>true</DebugSymbols>
......@@ -69,9 +70,11 @@
<Reference Include="MahApps.Metro.IconPacks, Version=2.3.0.4, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MahApps.Metro.IconPacks.2.3.0\lib\net45\MahApps.Metro.IconPacks.dll</HintPath>
</Reference>
<Reference Include="netstandard, Version=2.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51" />
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll</HintPath>
</Reference>
......@@ -93,6 +96,11 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</ApplicationDefinition>
<Compile Include="ObservableTranslationDataHolder.xaml.cs">
<DependentUpon>ObservableTranslationDataHolder.xaml</DependentUpon>
</Compile>
<Compile Include="shared\common\util\ui\UiUtility.cs" />
<Compile Include="shared\data\main\MainWindowData.cs" />
<Page Include="client\ui\main\MainWindow.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
......@@ -105,6 +113,10 @@
<DependentUpon>MainWindow.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Page Include="ObservableTranslationDataHolder.xaml">
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs">
......@@ -136,13 +148,15 @@
<ItemGroup>
<Folder Include="client\ui\res\" />
<Folder Include="server\" />
<Folder Include="shared\" />
</ItemGroup>
<ItemGroup>
<Resource Include="jedi-order-brands.ico" />
<Resource Include="eaw-icon.ico" />
</ItemGroup>
<ItemGroup>
<Resource Include="eaw-icon.ico" />
<ProjectReference Include="..\..\yvaw-translationmanifest\ts.translation\ts.translation.csproj">
<Project>{1fd1fc67-71ce-4c2b-a552-2d16d9b3629a}</Project>
<Name>ts.translation</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="ControlzEx" version="3.0.2.4" targetFramework="net45" />
<package id="ControlzEx" version="3.0.2.4" targetFramework="net45" requireReinstallation="true" />
<package id="log4net" version="2.0.8" targetFramework="net45" />
<package id="MahApps.Metro" version="1.6.5" targetFramework="net45" />
<package id="MahApps.Metro.IconPacks" version="2.3.0" targetFramework="net45" />
<package id="MahApps.Metro" version="1.6.5" targetFramework="net45" requireReinstallation="true" />
<package id="MahApps.Metro.IconPacks" version="2.3.0" targetFramework="net45" requireReinstallation="true" />
</packages>
\ No newline at end of file
using System.Windows;
using System.Windows.Media;
namespace eaw_texteditor.shared.common.util.ui
{
internal static class UiUtility
{
public static T TryFindParent<T>(this DependencyObject child) where T : DependencyObject
{
DependencyObject parentObject = GetParentObject(child);
if (parentObject == null) return null;
T parent = parentObject as T;
return parent ?? TryFindParent<T>(parentObject);
}
public static DependencyObject GetParentObject(this DependencyObject child)
{
switch (child)
{
case null:
return null;
case ContentElement contentElement:
{
DependencyObject parent = ContentOperations.GetParent(contentElement);
if (parent != null) return parent;
return contentElement is FrameworkContentElement fce ? fce.Parent : null;
}
case FrameworkElement frameworkElement:
{
DependencyObject parent = frameworkElement.Parent;
if (parent != null) return parent;
break;
}
}
return VisualTreeHelper.GetParent(child);
}
}
}
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using ts.translation.Annotations;
using ts.translation.data.holder.observables;
namespace eaw_texteditor.shared.data.main
{
public class MainWindowData : INotifyPropertyChanged
{
public bool IsAdvancedSearchCheckBoxChecked { get; set; }
public string SearchTerm { get; set; }
private ObservableCollection<ObservableTranslationData> _observableTranslationDataHolder = new ObservableCollection<ObservableTranslationData>();
public ObservableCollection<ObservableTranslationData> ObservableTranslationDataHolder
{
get => _observableTranslationDataHolder;
set
{
_observableTranslationDataHolder = value;
OnPropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
[NotifyPropertyChangedInvocator]
protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment