ソリューション:C++/CX WPF、コード内のユーザーコントロールのプロパティへのアクセスも
はMenuControl.cppで
#include "MenuEntryControl.xaml.h"
を追加します。
Thx Andy!
私はVisual Studioコミュニティ2017のC++/CXでプログラムを書きます。 私はXAMLで自分のインターフェイスを構築します。
<UserControl
x:Class="XXXXXX.MenuEntryControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:XXXXXX"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="54"
d:DesignWidth="276">
<Grid x:Name="container">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="39*"/>
<ColumnDefinition Width="63*"/>
<ColumnDefinition Width="143*"/>
<ColumnDefinition Width="31*"/>
</Grid.ColumnDefinitions>
<TextBlock x:Name="TitleInput" Grid.Column="2" TextAlignment="Center" Margin="0,21,0,15" TextWrapping="Wrap" Text="I N P U T" Foreground="White" FontFamily="Open Sans Light"/>
<Image x:Name="image" Source="ms-appx:///Assets/settings.png" HorizontalAlignment="Left" Height="28" VerticalAlignment="Top" Width="29" Margin="17,14,0,0" Grid.Column="1"/>
<Button x:Name="ClickableZone" Grid.ColumnSpan="4" Height="54" Width="276" Click="ClickableZone_Click" BorderThickness="0" Background="#00000000"/>
</Grid>
</UserControl>
MenuEntryControl.xaml.h:
だから、私は(これは、カスタムボタンです)
これはMenuEntryControlのXAMLでカスタムユーザーコントロールをしました
[Windows::Foundation::Metadata::WebHostHidden]
public ref class MenuEntryControl sealed
{
public:
MenuEntryControl();
void SetTitle(Platform::String ^title);
void SetFocus(bool focused);
//Titre affiché sur le bouton (Set attribut s_title)
property Platform::String^Title
{
Platform::String^get() { return s_title; }
void set(Platform::String^value)
{
s_title = value;
Refresh();
}
}
property Windows::UI::Xaml::Media::ImageSource^Icon
{
Windows::UI::Xaml::Media::ImageSource^ get() { return is_icon; }
void set(Windows::UI::Xaml::Media::ImageSource^value)
{
is_icon = value;
Refresh();
}
}
private :
Platform::String^s_title; //Titre du bouton (Attribut)
bool b_isFocused;
Windows::UI::Xaml::Media::ImageSource^is_icon; //Icone affichée sur le bouton (Attribut)
void ClickableZone_Click(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
//Methode de rafraichissement de l'UI
void Refresh();
};
リビルド後、このコントロールをMenuControl.xに追加します。 MenuControl.cppで)
私ができる」; AML(メインと設定)
そして、これが問題になりました、だから、MenuControl.xaml
<UserControl
x:Class="XXXXXX.MenuControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="using:XXXXXX"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="720"
d:DesignWidth="276">
<Grid Background="#FF4B4B4B">
<Border BorderBrush="#66FFFFFF" BorderThickness="0,0.4,0,0" HorizontalAlignment="Left" Height="10" Margin="0,83,0,0" VerticalAlignment="Top" Width="276"/>
<TextBlock x:Name="textBlock" HorizontalAlignment="Left" TextAlignment="Center" Margin="0,30,0,0" TextWrapping="Wrap" Text="X X X X X X" VerticalAlignment="Top" Foreground="White" FontFamily="Open Sans Light" FontSize="24" Width="276"/>
<local:MenuEntryControl x:Name="Main_button" HorizontalAlignment="Left" Height="55" Margin="0,105,0,0" VerticalAlignment="Top" Width="276" Icon="ms-appx:///Assets/home.png" Title="M A I N"/>
<local:MenuEntryControl HorizontalAlignment="Left" Height="58" Margin="0,160,0,0" VerticalAlignment="Top" Width="276" Title="C O N F I G U R E" Icon="ms-appx:///Assets/settings.png"/>
</Grid> </UserControl>
のXAMLコードでありますx:name "Main_button"でユーザーコントロールのメソッドにアクセスします。この行で
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;
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
MenuControl::MenuControl()
{
InitializeComponent();
}
void XXXXXX::MenuControl::Configure()
{
Main_button->
}
ビジュアル発言:
Main_button->
正直
を "許可されていない不完全なクラスへのポインタ"、私がブロックされています。アイデアはありますか?
あなたは本当にUIのコードをC++/CLIを使用しないでください。代わりにC#に試してみてください。 –
UI用にC#、コア用にC++を使用できますか? 私にはセキュリティの制約があります。 – user7360756
使用されている名前空間によると、WPFではなくWinRT(またはUWP)のようです。その言語はC++/CXであり、C++/CLIではありません。 この場合、UIにC#を使用し、コアにC++を使用できますが、C#ライブラリとC++ライブラリ間でオブジェクトを転送できる制限があります。 – Pavel