Skip to content

Commit

Permalink
I wanted to add a object defined in XAML, but that seems impossible, …
Browse files Browse the repository at this point in the history
…unfortunately
  • Loading branch information
zadjii-msft committed May 8, 2023
1 parent e0c8135 commit 950311c
Show file tree
Hide file tree
Showing 9 changed files with 123 additions and 6 deletions.
6 changes: 5 additions & 1 deletion scratch/ExtensionComponent/Class.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,18 @@ namespace winrt::ExtensionComponent::implementation
{
winrt::Windows::UI::Xaml::Controls::Button myButton{};
myButton.Content(winrt::box_value(L"This came from an extension"));

// Add an onclick handler to the button that sets the background of the button to a random color
myButton.Click([myButton](auto&&, auto&&) {
winrt::Windows::UI::Xaml::Media::SolidColorBrush brush{};
brush.Color(winrt::Windows::UI::ColorHelper::FromArgb(255, rand() % 255, rand() % 255, rand() % 255));
myButton.Background(brush);
});
return myButton;

// // This may be hard to impossible, due to
// // https://github.com/microsoft/microsoft-ui-xaml/issues/6299
// winrt::ExtensionComponent::ExtensionUserControl myControl{};
// return myControl;
}

}
21 changes: 16 additions & 5 deletions scratch/ExtensionComponent/ExtensionComponent.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -115,12 +115,18 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="ExtensionUserControl.xaml.h">
<DependentUpon>ExtensionUserControl.xaml</DependentUpon>
</ClInclude>
<ClInclude Include="pch.h" />
<ClInclude Include="Class.h">
<DependentUpon>Class.idl</DependentUpon>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="ExtensionUserControl.xaml.cpp">
<DependentUpon>ExtensionUserControl.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="pch.cpp">
<PrecompiledHeader>Create</PrecompiledHeader>
</ClCompile>
Expand All @@ -131,6 +137,9 @@
</ItemGroup>
<ItemGroup>
<Midl Include="Class.idl" />
<Midl Include="ExtensionUserControl.idl" >
<DependentUpon>ExtensionUserControl.xaml</DependentUpon>
</Midl>
</ItemGroup>
<ItemGroup>
<None Include="ExtensionComponent.def" />
Expand All @@ -142,11 +151,9 @@
<DeploymentContent>false</DeploymentContent>
</Text>
</ItemGroup>


<!-- ========================== Other References ========================= -->
<ItemGroup>
<!-- <Reference Include="SampleApp">
<!-- <Reference Include="SampleApp">
<HintPath>$(OpenConsoleCommonOutDir)\SampleAppLib\SampleApp.winmd</HintPath>
<HintPath>..\..\bin\x64\Debug\SampleAppLib\SampleApp.winmd</HintPath>
<IsWinMDFile>true</IsWinMDFile>
Expand Down Expand Up @@ -175,15 +182,19 @@
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
</Reference> -->
<!-- <Reference Include="Microsoft.Terminal.Control">
<!-- <Reference Include="Microsoft.Terminal.Control">
<HintPath>$(OpenConsoleCommonOutDir)Microsoft.Terminal.Control\Microsoft.Terminal.Control.winmd</HintPath>
<HintPath>..\..\bin\x64\debug\Microsoft.Terminal.Control\Microsoft.Terminal.Control.winmd</HintPath>
<IsWinMDFile>true</IsWinMDFile>
<Private>false</Private>
<CopyLocalSatelliteAssemblies>false</CopyLocalSatelliteAssemblies>
</Reference> -->
</ItemGroup>

<ItemGroup>
<Page Include="ExtensionUserControl.xaml">
<SubType>Designer</SubType>
</Page>
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
<Import Project="..\..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('..\..\packages\Microsoft.Windows.CppWinRT.2.0.230207.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
Expand Down
3 changes: 3 additions & 0 deletions scratch/ExtensionComponent/ExtensionComponent.vcxproj.filters
Original file line number Diff line number Diff line change
Expand Up @@ -30,4 +30,7 @@
<ItemGroup>
<Text Include="readme.txt" />
</ItemGroup>
<ItemGroup>
<Page Include="ExtensionUserControl.xaml" />
</ItemGroup>
</Project>
8 changes: 8 additions & 0 deletions scratch/ExtensionComponent/ExtensionUserControl.idl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace ExtensionComponent
{
[default_interface] runtimeclass ExtensionUserControl : Windows.UI.Xaml.Controls.UserControl
{
ExtensionUserControl();
Int32 MyValue;
}
}
18 changes: 18 additions & 0 deletions scratch/ExtensionComponent/ExtensionUserControl.xaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<UserControl x:Class="ExtensionComponent.ExtensionUserControl"
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:ExtensionComponent"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
d:DesignHeight="300"
d:DesignWidth="400"
mc:Ignorable="d">

<Grid>
<Button x:Name="Button1"
Margin="10,10,0,0"
HorizontalAlignment="Left"
VerticalAlignment="Top"
Content="{x:Bind MyValue, Mode=OneWay}" />
</Grid>
</UserControl>
29 changes: 29 additions & 0 deletions scratch/ExtensionComponent/ExtensionUserControl.xaml.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// ExtensionUserControl.xaml.cpp
// Implementation of the ExtensionUserControl class
//

#include "pch.h"
#include "ExtensionUserControl.xaml.h"
#include "ExtensionUserControl.g.cpp"



// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236

namespace winrt::ExtensionComponent::implementation
{

int32_t ExtensionUserControl::MyValue()
{
return _MyValue;
};
void ExtensionUserControl::MyValue(const int32_t& value)
{
if (_MyValue != value)
{
_MyValue = value;
_PropertyChanged(*this, winrt::Windows::UI::Xaml::Data::PropertyChangedEventArgs{ L"MyValue" });
}
};
}
41 changes: 41 additions & 0 deletions scratch/ExtensionComponent/ExtensionUserControl.xaml.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
//
// ExtensionUserControl.xaml.h
// Declaration of the ExtensionUserControl class
//

#pragma once

#include "ExtensionUserControl.g.h"

namespace winrt::ExtensionComponent::implementation
{
struct ExtensionUserControl : ExtensionUserControlT<ExtensionUserControl>
{
ExtensionUserControl() = default;

public:
// and an observable "MyValue" property
int32_t MyValue();
void MyValue(const int32_t& value);

winrt::event_token PropertyChanged(winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler const& handler)
{
return _PropertyChanged.add(handler);
}
void PropertyChanged(winrt::event_token const& token) noexcept
{
_PropertyChanged.remove(token);
}

private:
int32_t _MyValue{ 10 };
winrt::event<winrt::Windows::UI::Xaml::Data::PropertyChangedEventHandler> _PropertyChanged;
};
}

namespace winrt::ExtensionComponent::factory_implementation
{
struct ExtensionUserControl : ExtensionUserControlT<ExtensionUserControl, implementation::ExtensionUserControl>
{
};
}
1 change: 1 addition & 0 deletions scratch/ExtensionComponent/pch.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <winrt/Windows.Foundation.h>
#include <winrt/Windows.Foundation.Collections.h>
#include <winrt/Windows.UI.Xaml.h>
#include <winrt/Windows.UI.Xaml.Data.h>
#include <winrt/Windows.UI.Xaml.Media.h>
#include <winrt/Windows.UI.Xaml.Controls.h>
#include <winrt/Windows.UI.Xaml.Controls.Primitives.h>
Expand Down
2 changes: 2 additions & 0 deletions scratch/ExtensionHost/pch.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@
#include <winrt/Windows.ApplicationModel.AppExtensions.h>

#include <appmodel.h>

#include <winrt/ExtensionComponent.h>

1 comment on commit 950311c

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@check-spelling-bot Report

🔴 Please review

See the 📜action log for details.

Unrecognized words (3)

debugbreak
PACKAGEDEPENDENCY
restrictederrorinfo

Previously acknowledged words that are now absent Hirots NULs spand xwwyzz xxyyzz :arrow_right:
To accept ✔️ these unrecognized words as correct and remove the previously acknowledged and now absent words, run the following commands

... in a clone of the git@github.com:microsoft/terminal.git repository
on the dev/migrie/fhl/dyndep branch (ℹ️ how do I use this?):

curl -s -S -L 'https://raw.githubusercontent.com/check-spelling/check-spelling/v0.0.21/apply.pl' |
perl - 'https://github.com/microsoft/terminal/actions/runs/4917150419/attempts/1'
✏️ Contributor please read this

By default the command suggestion will generate a file named based on your commit. That's generally ok as long as you add the file to your commit. Someone can reorganize it later.

⚠️ The command is written for posix shells. If it doesn't work for you, you can manually add (one word per line) / remove items to expect.txt and the excludes.txt files.

If the listed items are:

  • ... misspelled, then please correct them instead of using the command.
  • ... names, please add them to .github/actions/spelling/allow/names.txt.
  • ... APIs, you can add them to a file in .github/actions/spelling/allow/.
  • ... just things you're using, please add them to an appropriate file in .github/actions/spelling/expect/.
  • ... tokens you only need in one place and shouldn't generally be used, you can add an item in an appropriate file in .github/actions/spelling/patterns/.

See the README.md in each directory for more information.

🔬 You can test your commits without appending to a PR by creating a new branch with that extra change and pushing it to your fork. The check-spelling action will run in response to your push -- it doesn't require an open pull request. By using such a branch, you can limit the number of typos your peers see you make. 😉

If the flagged items are 🤯 false positives

If items relate to a ...

  • binary file (or some other file you wouldn't want to check at all).

    Please add a file path to the excludes.txt file matching the containing file.

    File paths are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your files.

    ^ refers to the file's path from the root of the repository, so ^README\.md$ would exclude README.md (on whichever branch you're using).

  • well-formed pattern.

    If you can write a pattern that would match it,
    try adding it to the patterns.txt file.

    Patterns are Perl 5 Regular Expressions - you can test yours before committing to verify it will match your lines.

    Note that patterns can't match multiline strings.

Please sign in to comment.