Browse Source

Merge branch 'dependson'

Conflicts:
	samples/XamlTestApplication/Views/MainWindow.paml
	src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs
	src/Perspex.SceneGraph/Media/FormattedText.cs
pull/227/head
Steven Kirk 11 years ago
parent
commit
1f05f98200
  1. 5
      samples/XamlTestApplication/Views/MainWindow.paml
  2. 30
      src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs
  3. 2
      src/Markup/Perspex.Markup.Xaml/OmniXAML
  4. 1
      src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj
  5. 2
      src/Perspex.Controls/DropDown.cs
  6. 2
      src/Perspex.Controls/ItemsControl.cs
  7. 2
      src/Perspex.Controls/Primitives/SelectingItemsControl.cs
  8. 6
      src/Perspex.Controls/TextBlock.cs
  9. 7
      src/Perspex.SceneGraph/Media/FormattedText.cs

5
samples/XamlTestApplication/Views/MainWindow.paml

@ -2,7 +2,6 @@
xmlns="https://github.com/perspex"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Perspex Test Application" Height="350" Width="525" SizeToContent="WidthAndHeight" >
<Grid RowDefinitions="Auto,*,Auto" ColumnDefinitions="*,*">
<TabControl Grid.Row="1" Grid.ColumnSpan="2" Padding="5">
<TabControl.Transition>
@ -49,7 +48,7 @@
</TabItem>
<TabItem Header="Lists">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<ListBox>
<ListBox SelectedIndex="0">
<ListBoxItem>
<StackPanel>
<TextBlock Text="Item 1" FontSize="24" />
@ -63,7 +62,7 @@
</StackPanel>
</ListBoxItem>
</ListBox>
<DropDown VerticalAlignment="Center">
<DropDown VerticalAlignment="Center" SelectedIndex="0">
<StackPanel>
<TextBlock Text="Item 1" FontSize="24" />
<TextBlock Text="Item 1 Value" />

30
src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs

@ -22,23 +22,37 @@ using Perspex.Media.Imaging;
using Perspex.Metadata;
using Perspex.Platform;
using Perspex.Styling;
using Perspex.Controls.Primitives;
namespace Perspex.Markup.Xaml.Context
{
public class PerspexWiringContext : IWiringContext
public class PerspexWiringContext : WiringContext
{
private readonly WiringContext _context;
private const string PerspexNs = "https://github.com/perspex";
public PerspexWiringContext(ITypeFactory typeFactory)
: this(typeFactory, new TypeFeatureProvider(GetContentPropertyProvider(), GetConverterProvider()))
{
var featureProvider = new TypeFeatureProvider(GetContentPropertyProvider(), GetConverterProvider());
}
public PerspexWiringContext(ITypeFactory typeFactory, TypeFeatureProvider featureProvider)
: base(CreateTypeContext(typeFactory, featureProvider), featureProvider)
{
}
private static ITypeContext CreateTypeContext(ITypeFactory typeFactory, TypeFeatureProvider featureProvider)
{
var xamlNamespaceRegistry = CreateXamlNamespaceRegistry();
var perspexPropertyBinder = new PerspexPropertyBinder(featureProvider.ConverterProvider);
var xamlTypeRepository = new PerspexTypeRepository(xamlNamespaceRegistry, typeFactory, featureProvider, perspexPropertyBinder);
var typeContext = new TypeContext(xamlTypeRepository, xamlNamespaceRegistry, typeFactory);
_context = new WiringContext(typeContext, featureProvider);
var typeRepository = new PerspexTypeRepository(xamlNamespaceRegistry, typeFactory, featureProvider, perspexPropertyBinder);
typeRepository.RegisterMetadata(new Metadata<Setter>().WithMemberDependency(x => x.Value, x => x.Property));
typeRepository.RegisterMetadata(
new Metadata<SelectingItemsControl>()
.WithMemberDependency(x => x.SelectedIndex, x => x.Items)
.WithMemberDependency(x => x.SelectedItem, x => x.Items));
return new TypeContext(typeRepository, xamlNamespaceRegistry, typeFactory);
}
private static XamlNamespaceRegistry CreateXamlNamespaceRegistry()
@ -116,9 +130,5 @@ namespace Perspex.Markup.Xaml.Context
return contentPropertyProvider;
}
public ITypeContext TypeContext => _context.TypeContext;
public ITypeFeatureProvider FeatureProvider => _context.FeatureProvider;
}
}

2
src/Markup/Perspex.Markup.Xaml/OmniXAML

@ -1 +1 @@
Subproject commit 1aa1e5080b04ccf40baef4420ee29ffef9303811
Subproject commit 49e6ec001f5873cf2290e0bc1f6f06ca9b9cf808

1
src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj

@ -59,6 +59,7 @@
<Compile Include="DataBinding\ChangeTracking\PropertyPath.cs" />
<Compile Include="DataBinding\ChangeTracking\TargettedProperty.cs" />
<Compile Include="Context\PerspexParserFactory.cs" />
<Compile Include="OmniXAML\Source\Glass\AutoKeyDictionary.cs" />
<Compile Include="OmniXAML\Source\Glass\ChangeTracking\ObservableProperty.cs" />
<Compile Include="OmniXAML\Source\Glass\ChangeTracking\ObservablePropertyChain.cs" />
<Compile Include="OmniXAML\Source\Glass\ChangeTracking\Property.cs" />

2
src/Perspex.Controls/DropDown.cs

@ -140,6 +140,8 @@ namespace Perspex.Controls
if (control != null)
{
control.Measure(Size.Infinity);
SelectionBoxItem = new Rectangle
{
Width = control.DesiredSize.Width,

2
src/Perspex.Controls/ItemsControl.cs

@ -155,6 +155,8 @@ namespace Perspex.Controls
/// <param name="e">The event args.</param>
protected virtual void ItemsChanged(PerspexPropertyChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine($"{this.GetType().Name} set items");
var incc = e.OldValue as INotifyCollectionChanged;
if (incc != null)

2
src/Perspex.Controls/Primitives/SelectingItemsControl.cs

@ -299,6 +299,8 @@ namespace Perspex.Controls.Primitives
/// <param name="e">The event args.</param>
private void SelectedIndexChanged(PerspexPropertyChangedEventArgs e)
{
System.Diagnostics.Debug.WriteLine($"{this.GetType().Name} set selected index");
var index = (int)e.OldValue;
if (index != -1)

6
src/Perspex.Controls/TextBlock.cs

@ -235,9 +235,9 @@ namespace Perspex.Controls
protected virtual FormattedText CreateFormattedText(Size constraint)
{
var result = new FormattedText(
Text,
FontFamily,
FontSize,
Text ?? string.Empty,
FontFamily ?? "Ariel",
FontSize > 0 ? FontSize : 12,
FontStyle,
TextAlignment,
FontWeight);

7
src/Perspex.SceneGraph/Media/FormattedText.cs

@ -29,9 +29,10 @@ namespace Perspex.Media
TextAlignment textAlignment,
FontWeight fontWeight)
{
//TODO: Find out why it was null in the first place. Demo project - AvalonStudio
//https://github.com/VitalElement/AvalonStudio/commit/787fb9396feb74e6ca6bd4e08436269a349df9c6
text = text ?? "";
Contract.Requires<ArgumentNullException>(text != null);
Contract.Requires<ArgumentNullException>(fontFamilyName != null);
Contract.Requires<ArgumentException>(fontSize > 0);
Text = text;
FontFamilyName = fontFamilyName;
FontSize = fontSize;

Loading…
Cancel
Save