From a1f680a715bbf172b165f8b06481ecedc7af7246 Mon Sep 17 00:00:00 2001 From: vczh Date: Thu, 14 Apr 2016 00:36:47 -0700 Subject: [PATCH] Demo: GacUI_Xml\Binding_ViewModel --- Tutorial/GacUI_Xml/Binding_ViewModel/Main.cpp | 11 ++++- .../Binding_ViewModel/UI/Resource.xml | 43 ++++++++++++++++-- .../UI/Source/DemoPartialClasses.cpp | 15 ++++-- .../UI/Source/DemoPartialClasses.h | 23 +++++++++- .../GacUI_Xml/UIRes/Binding_ViewModel.bin | Bin 38647 -> 200012 bytes Tutorial/README.md | 10 ++-- 6 files changed, 88 insertions(+), 14 deletions(-) diff --git a/Tutorial/GacUI_Xml/Binding_ViewModel/Main.cpp b/Tutorial/GacUI_Xml/Binding_ViewModel/Main.cpp index e64bc96a..9811e524 100644 --- a/Tutorial/GacUI_Xml/Binding_ViewModel/Main.cpp +++ b/Tutorial/GacUI_Xml/Binding_ViewModel/Main.cpp @@ -9,6 +9,15 @@ int CALLBACK WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi return SetupWindowsDirect2DRenderer(); } +class ViewModelImpl : public Object, public virtual demo::IViewModel +{ +public: + WString GetMessageFromName(WString name)override + { + return L"Hi, " + name + L"! How are you?"; + } +}; + void GuiMain() { { @@ -17,7 +26,7 @@ void GuiMain() auto resource = GuiResource::LoadPrecompiledBinary(fileStream, errors); GetResourceManager()->SetResource(L"Resource", resource); } - demo::MainWindow window; + demo::MainWindow window(new ViewModelImpl); window.MoveToScreenCenter(); GetApplication()->Run(&window); } \ No newline at end of file diff --git a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Resource.xml b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Resource.xml index f60677fb..4123a1e4 100644 --- a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Resource.xml +++ b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Resource.xml @@ -13,13 +13,50 @@ + + - + + + composeType:MinSize + composeType:MinSize + composeType:Percentage percentage:1.0 + + + composeType:MinSize + composeType:Absolute absolute:100 + composeType:Percentage percentage:1.0 + + + + + + + + + + + + + +
diff --git a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp index aa0483a1..e3d76e68 100644 --- a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp +++ b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.cpp @@ -16,9 +16,9 @@ namespace demo // #endregion CLASS_MEMBER_GUIEVENT_HANDLER - MainWindow::MainWindow() + MainWindow::MainWindow(Ptr ViewModel) { - InitializeComponents(); + InitializeComponents(ViewModel); } MainWindow::~MainWindow() @@ -35,11 +35,19 @@ namespace vl namespace description { #define _ , + IMPL_CPP_TYPE_INFO(demo::IViewModel) IMPL_CPP_TYPE_INFO(demo::MainWindow) + BEGIN_CLASS_MEMBER(demo::IViewModel) + CLASS_MEMBER_BASE(vl::reflection::IDescriptable) + CLASS_MEMBER_METHOD(GetMessageFromName, { L"name" }); + END_CLASS_MEMBER(demo::IViewModel) + BEGIN_CLASS_MEMBER(demo::MainWindow) CLASS_MEMBER_BASE(vl::presentation::controls::GuiWindow) - CLASS_MEMBER_CONSTRUCTOR(demo::MainWindow*(), NO_PARAMETER) + CLASS_MEMBER_CONSTRUCTOR(demo::MainWindow*(Ptr), { L"ViewModel" }) + + CLASS_MEMBER_PROPERTY_READONLY_FAST(ViewModel) END_CLASS_MEMBER(demo::MainWindow) #undef _ @@ -49,6 +57,7 @@ namespace vl public: void Load(ITypeManager* manager) { + ADD_TYPE_INFO(demo::IViewModel) ADD_TYPE_INFO(demo::MainWindow) } diff --git a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.h b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.h index 8088a85f..7a5ad841 100644 --- a/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.h +++ b/Tutorial/GacUI_Xml/Binding_ViewModel/UI/Source/DemoPartialClasses.h @@ -15,30 +15,48 @@ DO NOT MODIFY namespace demo { + class IViewModel; class MainWindow; + class IViewModel : public virtual vl::reflection::IDescriptable, public vl::reflection::Description + { + public: + virtual vl::WString GetMessageFromName(vl::WString name) = 0; + }; + template class MainWindow_ : public vl::presentation::controls::GuiWindow, public vl::presentation::GuiInstancePartialClass, public vl::reflection::Description { friend struct vl::reflection::description::CustomTypeDescriptorSelector; private: + Ptr ViewModel_; protected: + vl::presentation::controls::GuiSinglelineTextBox* textBoxName; - void InitializeComponents() + void InitializeComponents(Ptr ViewModel) { + ViewModel_ = ViewModel; if (InitializeFromResource()) { + GUI_INSTANCE_REFERENCE(textBoxName); } else { + ViewModel_ = 0; } } public: MainWindow_() :vl::presentation::GuiInstancePartialClass(L"demo::MainWindow") ,vl::presentation::controls::GuiWindow(vl::presentation::theme::GetCurrentTheme()->CreateWindowStyle()) + ,textBoxName(0) { } + + Ptr GetViewModel() + { + return ViewModel_; + } }; } @@ -48,6 +66,7 @@ namespace vl { namespace description { + DECL_TYPE_INFO(demo::IViewModel) DECL_TYPE_INFO(demo::MainWindow) } @@ -64,7 +83,7 @@ namespace demo // #region CLASS_MEMBER_GUIEVENT_HANDLER (DO NOT PUT OTHER CONTENT IN THIS #region.) // #endregion CLASS_MEMBER_GUIEVENT_HANDLER public: - MainWindow(); + MainWindow(Ptr ViewModel); ~MainWindow(); }; } diff --git a/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin b/Tutorial/GacUI_Xml/UIRes/Binding_ViewModel.bin index 11040e6ea93ccbfa325691ec034b91637a0291a3..b71dfd7110240e6e18913373340ce15a6bcb5926 100644 GIT binary patch literal 200012 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