From 962dad5522e0b8d2b14c56fdc47e9a2f6069d0b7 Mon Sep 17 00:00:00 2001 From: syneffort Date: Mon, 31 Jul 2023 15:19:10 +0900 Subject: [PATCH] study --- .../ControlTemplateSample/MainWindow.xaml | 18 +++++- .../DelegateEventFuncAction.csproj | 10 ++++ .../DelegateEventFuncAction/DelegateTest.cs | 57 +++++++++++++++++++ .../DelegateEventFuncAction/EventTest.cs | 29 ++++++++++ .../DelegateEventFuncAction/Program.cs | 26 +++++++++ PacticeSolution/ListViewEditSample/App.xaml | 9 +++ .../ListViewEditSample/App.xaml.cs | 17 ++++++ .../ListViewEditSample/AssemblyInfo.cs | 10 ++++ .../ListViewEditSample/CompanyInfo.cs | 14 +++++ .../ListViewEditSample/CompanyList.cs | 24 ++++++++ .../ListViewEditSample/DateConverter.cs | 28 +++++++++ .../ListViewEditSample.csproj | 10 ++++ .../ListViewEditSample/MainWindow.xaml | 27 +++++++++ .../ListViewEditSample/MainWindow.xaml.cs | 28 +++++++++ PacticeSolution/PacticeSolution.sln | 16 +++++- 15 files changed, 320 insertions(+), 3 deletions(-) create mode 100644 PacticeSolution/DelegateEventFuncAction/DelegateEventFuncAction.csproj create mode 100644 PacticeSolution/DelegateEventFuncAction/DelegateTest.cs create mode 100644 PacticeSolution/DelegateEventFuncAction/EventTest.cs create mode 100644 PacticeSolution/DelegateEventFuncAction/Program.cs create mode 100644 PacticeSolution/ListViewEditSample/App.xaml create mode 100644 PacticeSolution/ListViewEditSample/App.xaml.cs create mode 100644 PacticeSolution/ListViewEditSample/AssemblyInfo.cs create mode 100644 PacticeSolution/ListViewEditSample/CompanyInfo.cs create mode 100644 PacticeSolution/ListViewEditSample/CompanyList.cs create mode 100644 PacticeSolution/ListViewEditSample/DateConverter.cs create mode 100644 PacticeSolution/ListViewEditSample/ListViewEditSample.csproj create mode 100644 PacticeSolution/ListViewEditSample/MainWindow.xaml create mode 100644 PacticeSolution/ListViewEditSample/MainWindow.xaml.cs diff --git a/PacticeSolution/ControlTemplateSample/MainWindow.xaml b/PacticeSolution/ControlTemplateSample/MainWindow.xaml index 50fd9ec..4c63ede 100644 --- a/PacticeSolution/ControlTemplateSample/MainWindow.xaml +++ b/PacticeSolution/ControlTemplateSample/MainWindow.xaml @@ -7,7 +7,12 @@ mc:Ignorable="d" Title="MainWindow" Height="450" Width="800"> - + + diff --git a/PacticeSolution/DelegateEventFuncAction/DelegateEventFuncAction.csproj b/PacticeSolution/DelegateEventFuncAction/DelegateEventFuncAction.csproj new file mode 100644 index 0000000..74abf5c --- /dev/null +++ b/PacticeSolution/DelegateEventFuncAction/DelegateEventFuncAction.csproj @@ -0,0 +1,10 @@ + + + + Exe + net6.0 + enable + enable + + + diff --git a/PacticeSolution/DelegateEventFuncAction/DelegateTest.cs b/PacticeSolution/DelegateEventFuncAction/DelegateTest.cs new file mode 100644 index 0000000..478d445 --- /dev/null +++ b/PacticeSolution/DelegateEventFuncAction/DelegateTest.cs @@ -0,0 +1,57 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DelegateEventFuncAction +{ + public class DelegateTest + { + public delegate void FunctionPointer(); + + private static void Print1() + { + Console.WriteLine("Print 1"); + } + + private static void Print2() + { + Console.WriteLine("Print 2"); + } + + private static void Print3() + { + Console.WriteLine("Print 3"); + } + + private static void Print4() + { + Console.WriteLine("Print 4"); + } + + private static void Execute(FunctionPointer fp) + { + fp(); + } + + public static void DoTest1() + { + Execute(Print1); + Execute(Print2); + Execute(Print3); + Execute(Print4); + } + + public static void DoTest2() + { + // delegate chain + FunctionPointer fp = new FunctionPointer(Print1); + fp += Print2; + fp += Print3; + fp += Print4; + + fp(); + } + } +} diff --git a/PacticeSolution/DelegateEventFuncAction/EventTest.cs b/PacticeSolution/DelegateEventFuncAction/EventTest.cs new file mode 100644 index 0000000..a3571bc --- /dev/null +++ b/PacticeSolution/DelegateEventFuncAction/EventTest.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DelegateEventFuncAction +{ + public class EventTest + { + public delegate void CustomEventHandler(string message); + + public event CustomEventHandler Trigger; + + public event Action TriggerByAction; + + public void Notify() + { + Random rnd = new Random(); + int r = rnd.Next(0, 10); + + if (r <= 7 && this.Trigger != null) + this.Trigger("70% probability"); + + if (r <= 5 && this.TriggerByAction != null) + this.TriggerByAction("50% probability"); + } + } +} diff --git a/PacticeSolution/DelegateEventFuncAction/Program.cs b/PacticeSolution/DelegateEventFuncAction/Program.cs new file mode 100644 index 0000000..6311851 --- /dev/null +++ b/PacticeSolution/DelegateEventFuncAction/Program.cs @@ -0,0 +1,26 @@ +namespace DelegateEventFuncAction +{ + internal class Program + { + static void Main(string[] args) + { + //DelegateTest.DoTest1(); + //DelegateTest.DoTest2(); + + EventTest et = new EventTest(); + et.Trigger += (message) => + { + Console.WriteLine($"[Delegate] {message}"); + }; + et.TriggerByAction += (message) => + { + Console.WriteLine($"[Action] {message}"); + }; + et.Notify(); + et.Notify(); + et.Notify(); + et.Notify(); + et.Notify(); + } + } +} \ No newline at end of file diff --git a/PacticeSolution/ListViewEditSample/App.xaml b/PacticeSolution/ListViewEditSample/App.xaml new file mode 100644 index 0000000..a0947a2 --- /dev/null +++ b/PacticeSolution/ListViewEditSample/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/PacticeSolution/ListViewEditSample/App.xaml.cs b/PacticeSolution/ListViewEditSample/App.xaml.cs new file mode 100644 index 0000000..ac099a6 --- /dev/null +++ b/PacticeSolution/ListViewEditSample/App.xaml.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace ListViewEditSample +{ + /// + /// Interaction logic for App.xaml + /// + public partial class App : Application + { + } +} diff --git a/PacticeSolution/ListViewEditSample/AssemblyInfo.cs b/PacticeSolution/ListViewEditSample/AssemblyInfo.cs new file mode 100644 index 0000000..8b5504e --- /dev/null +++ b/PacticeSolution/ListViewEditSample/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/PacticeSolution/ListViewEditSample/CompanyInfo.cs b/PacticeSolution/ListViewEditSample/CompanyInfo.cs new file mode 100644 index 0000000..6f63414 --- /dev/null +++ b/PacticeSolution/ListViewEditSample/CompanyInfo.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ListViewEditSample +{ + public class CompanyInfo + { + public string Name { get; set; } + public DateTime Date { get; set; } + } +} diff --git a/PacticeSolution/ListViewEditSample/CompanyList.cs b/PacticeSolution/ListViewEditSample/CompanyList.cs new file mode 100644 index 0000000..914ccba --- /dev/null +++ b/PacticeSolution/ListViewEditSample/CompanyList.cs @@ -0,0 +1,24 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ListViewEditSample +{ + internal class CompanyList : List + { + public CompanyList() + { + InitInstance(); + } + + private void InitInstance() + { + this.Add(new CompanyInfo() { Name = "Google", Date = DateTime.Now }); + this.Add(new CompanyInfo() { Name = "Hoogle", Date = DateTime.Now }); + this.Add(new CompanyInfo() { Name = "Ioogle", Date = DateTime.Now }); + this.Add(new CompanyInfo() { Name = "Joogle", Date = DateTime.Now }); + } + } +} diff --git a/PacticeSolution/ListViewEditSample/DateConverter.cs b/PacticeSolution/ListViewEditSample/DateConverter.cs new file mode 100644 index 0000000..2263152 --- /dev/null +++ b/PacticeSolution/ListViewEditSample/DateConverter.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Data; + +namespace ListViewEditSample +{ + internal class DateConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + if (!(value is DateTime)) + return ""; + + DateTime date = (DateTime)value; + + return date.ToString("yyyy년 MM월 dd일 HH시 mm분 ss초 fff밀리세컨드"); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} diff --git a/PacticeSolution/ListViewEditSample/ListViewEditSample.csproj b/PacticeSolution/ListViewEditSample/ListViewEditSample.csproj new file mode 100644 index 0000000..4106cb0 --- /dev/null +++ b/PacticeSolution/ListViewEditSample/ListViewEditSample.csproj @@ -0,0 +1,10 @@ + + + + WinExe + net6.0-windows + enable + true + + + diff --git a/PacticeSolution/ListViewEditSample/MainWindow.xaml b/PacticeSolution/ListViewEditSample/MainWindow.xaml new file mode 100644 index 0000000..8cb4f50 --- /dev/null +++ b/PacticeSolution/ListViewEditSample/MainWindow.xaml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + diff --git a/PacticeSolution/ListViewEditSample/MainWindow.xaml.cs b/PacticeSolution/ListViewEditSample/MainWindow.xaml.cs new file mode 100644 index 0000000..d721e49 --- /dev/null +++ b/PacticeSolution/ListViewEditSample/MainWindow.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace ListViewEditSample +{ + /// + /// Interaction logic for MainWindow.xaml + /// + public partial class MainWindow : Window + { + public MainWindow() + { + InitializeComponent(); + } + } +} diff --git a/PacticeSolution/PacticeSolution.sln b/PacticeSolution/PacticeSolution.sln index e902447..2079efa 100644 --- a/PacticeSolution/PacticeSolution.sln +++ b/PacticeSolution/PacticeSolution.sln @@ -103,9 +103,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AnonymousMethod", "Anonymou EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TabContorlLightSample", "TabContorlLightSample\TabContorlLightSample.csproj", "{BB27AD88-D070-4095-BB8B-E2049F7DB0EC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "StaticResourceSample", "StaticResourceSample\StaticResourceSample.csproj", "{6206E9C9-4449-42CC-A0A5-E54C4B15AA53}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "StaticResourceSample", "StaticResourceSample\StaticResourceSample.csproj", "{6206E9C9-4449-42CC-A0A5-E54C4B15AA53}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HowToUseStyle", "HowToUseStyle\HowToUseStyle.csproj", "{6E182894-D2F1-4D2C-B991-51B01A2E3223}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "HowToUseStyle", "HowToUseStyle\HowToUseStyle.csproj", "{6E182894-D2F1-4D2C-B991-51B01A2E3223}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ListViewEditSample", "ListViewEditSample\ListViewEditSample.csproj", "{87E66D9A-4E6C-43E8-B23A-AB2A2E9F67D5}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DelegateEventFuncAction", "DelegateEventFuncAction\DelegateEventFuncAction.csproj", "{52E7C139-F78C-4947-BB09-58D4BFF72435}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -321,6 +325,14 @@ Global {6E182894-D2F1-4D2C-B991-51B01A2E3223}.Debug|Any CPU.Build.0 = Debug|Any CPU {6E182894-D2F1-4D2C-B991-51B01A2E3223}.Release|Any CPU.ActiveCfg = Release|Any CPU {6E182894-D2F1-4D2C-B991-51B01A2E3223}.Release|Any CPU.Build.0 = Release|Any CPU + {87E66D9A-4E6C-43E8-B23A-AB2A2E9F67D5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {87E66D9A-4E6C-43E8-B23A-AB2A2E9F67D5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {87E66D9A-4E6C-43E8-B23A-AB2A2E9F67D5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {87E66D9A-4E6C-43E8-B23A-AB2A2E9F67D5}.Release|Any CPU.Build.0 = Release|Any CPU + {52E7C139-F78C-4947-BB09-58D4BFF72435}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {52E7C139-F78C-4947-BB09-58D4BFF72435}.Debug|Any CPU.Build.0 = Debug|Any CPU + {52E7C139-F78C-4947-BB09-58D4BFF72435}.Release|Any CPU.ActiveCfg = Release|Any CPU + {52E7C139-F78C-4947-BB09-58D4BFF72435}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE