Browse Source

Added initial ContextMenu attachedProperty.

danwalmsley 9 years ago
parent
commit
d2a6b89434

+ 3 - 1
samples/XamlTestApplicationPcl/Views/MainWindow.paml

@@ -38,7 +38,9 @@
           </TabItem>
           <TabItem Header="Text">
               <StackPanel Margin="10" Gap="4">
-                  <TextBlock Text="TextBlock" FontWeight="Medium" FontSize="20" Foreground="#212121" />
+                  <TextBlock Text="TextBlock" FontWeight="Medium" FontSize="20" Foreground="#212121">
+                    <ContextMenu.Menu></ContextMenu.Menu>
+                  </TextBlock>
                   <TextBlock Text="A control for displaying text."
                               FontSize="13"
                               Foreground="#727272"

+ 20 - 0
src/Perspex.Controls/ContextMenu.cs

@@ -0,0 +1,20 @@
+namespace Perspex.Controls
+{
+    using Primitives;
+
+    public class ContextMenu : SelectingItemsControl
+    {
+        public static readonly AttachedProperty<ContextMenu> MenuProperty =
+       PerspexProperty.RegisterAttached<ContextMenu, TextBlock, ContextMenu>("Menu");
+
+        public static ContextMenu GetMenu(TextBlock element)
+        {
+            return element.GetValue(MenuProperty);
+        }
+
+        public static void SetMenu(TextBlock element, ContextMenu value)
+        {
+            element.SetValue(MenuProperty, value);
+        }
+    }
+}

+ 1 - 0
src/Perspex.Controls/Perspex.Controls.csproj

@@ -43,6 +43,7 @@
       <Link>Properties\SharedAssemblyInfo.cs</Link>
     </Compile>
     <Compile Include="Classes.cs" />
+    <Compile Include="ContextMenu.cs" />
     <Compile Include="DockPanel.cs" />
     <Compile Include="Expander.cs" />
     <Compile Include="Generators\ItemContainer.cs" />

+ 15 - 0
src/Perspex.Themes.Default/ContextMenu.paml

@@ -0,0 +1,15 @@
+<Style xmlns="https://github.com/perspex" Selector="ContextMenu">
+  <Setter Property="Template">
+    <ControlTemplate>
+      <Border Background="{TemplateBinding Background}"
+              BorderBrush="{TemplateBinding BorderBrush}"
+              BorderThickness="{TemplateBinding BorderThickness}"
+              Padding="{TemplateBinding Padding}">
+        <ItemsPresenter Name="PART_ItemsPresenter" 
+                        Items="{TemplateBinding Items}" 
+                        ItemsPanel="{TemplateBinding ItemsPanel}"
+                        KeyboardNavigation.TabNavigation="Continue"/>
+      </Border>
+    </ControlTemplate>
+  </Setter>
+</Style>

+ 1 - 0
src/Perspex.Themes.Default/DefaultTheme.paml

@@ -11,6 +11,7 @@
   <StyleInclude Source="resm:Perspex.Themes.Default.ListBox.paml?assembly=Perspex.Themes.Default"/>
   <StyleInclude Source="resm:Perspex.Themes.Default.ListBoxItem.paml?assembly=Perspex.Themes.Default"/>
   <StyleInclude Source="resm:Perspex.Themes.Default.Menu.paml?assembly=Perspex.Themes.Default"/>
+  <StyleInclude Source="resm:Perspex.Themes.Default.ContextMenu.paml?assembly=Perspex.Themes.Default"/>
   <StyleInclude Source="resm:Perspex.Themes.Default.MenuItem.paml?assembly=Perspex.Themes.Default"/>
   <StyleInclude Source="resm:Perspex.Themes.Default.PopupRoot.paml?assembly=Perspex.Themes.Default"/>
   <StyleInclude Source="resm:Perspex.Themes.Default.ProgressBar.paml?assembly=Perspex.Themes.Default"/>

+ 3 - 0
src/Perspex.Themes.Default/Perspex.Themes.Default.csproj

@@ -147,6 +147,9 @@
     <EmbeddedResource Include="DropDownItem.paml">
       <SubType>Designer</SubType>
     </EmbeddedResource>
+    <EmbeddedResource Include="ContextMenu.paml">
+      <SubType>Designer</SubType>
+    </EmbeddedResource>
     <None Include="packages.config" />
     <EmbeddedResource Include="PopupRoot.paml">
       <SubType>Designer</SubType>