2016-04-19 1 views
0

C++:[UWP] [C++/CX] Не удается получить доступ к XAML UI из коде

#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> 

Так что мой вопрос, почему я не могу использовать ссылку или скорее найти ссылку SplitView в моей функции? и есть ли решение? Мне кажется, что это уродство, чтобы передать SplitPane как параметр P.S. in C# test() полностью легально

+0

C++ и C++/CLI не то же самое. Я обновил тег, но помните, как вы помечаете свои сообщения. –

ответ

0

Для использования частных полей MainPage, test() должен быть методом класса MainPage.

В MainPage.xaml.h:

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

В MainPage.xaml.cpp:

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

Теперь я чувствую себя глупо, но в любом случае спасибо за вашу помощь –

Смежные вопросы