2016-04-19 8 views
0

C++:[UWP] [C++/CX] Kann Zugriff auf XAML-UI nicht von Code-Behind

#include "pch.h" 
#include "MainPage.xaml.h" 

using namespace Testing; 

using namespace Platform; 
using namespace Windows::Foundation; 
using namespace Windows::Foundation::Collections; 
using namespace Windows::UI::Xaml; 
using namespace Windows::UI::Xaml::Controls; 
using namespace Windows::UI::Xaml::Controls::Primitives; 
using namespace Windows::UI::Xaml::Data; 
using namespace Windows::UI::Xaml::Input; 
using namespace Windows::UI::Xaml::Media; 
using namespace Windows::UI::Xaml::Navigation; 

MainPage::MainPage() 
{ 
    InitializeComponent(); 
} 


void Testing::MainPage::Page_SizeChanged(Platform::Object^ sender,Windows::UI::Xaml::SizeChangedEventArgs^ e) 
{ 
    SplitPane->isPaneOpen = !SplitPane->isPaneOpen; //LEGAL 
} 
void test() 
{ 
    SplitPane->isPaneOpen = !SplitPane->isPaneOpen; //NOT LEGAL 
} 

XAML:

<Page 
x:Class="Testing.MainPage" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:local="using:Testing" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" 
SizeChanged="Page_SizeChanged"> 

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> 
    <SplitView Name="SplitPane"> 
    </SplitView> 
</Grid> 

Also meine Frage ist, warum ich eine Referenz verwenden kann nicht oder finde lieber die Referenz der SplitView in meiner Funktion? und gibt es eine lösung? Ich finde es ein bisschen hässlich, SplitPane als Parameter P.S übergeben. in C# test() ist völlig legal

+0

C++ und C++/CLI sind nicht das Gleiche. Ich habe das Tag aktualisiert, aber denke bitte daran, wie du deine Posts tagest. –

Antwort

0

Um die privaten Felder eines MainPage zu verwenden, muss test() eine Methode der MainPage Klasse sein.

In MainPage.xaml.h:

public ref class MainPage sealed 
{ 
public: 
    MainPage(); 
    void test(); 
}; 

In MainPage.xaml.cpp:

void MainPage::test() 
{ 
    SplitPane->IsPaneOpen = !SplitPane->IsPaneOpen; // LEGAL 
} 
+0

Jetzt fühle ich mich dumm, aber trotzdem danke für deine Hilfe –

Verwandte Themen