From b3af361686ae59879659f7fa3ad3192c8a633614 Mon Sep 17 00:00:00 2001 From: Steven Kirk Date: Thu, 24 Sep 2015 00:06:04 +0200 Subject: [PATCH] Still trying to get property dependencies working. SelectedIndex isn't being set. --- samples/XamlTestApplication/Views/MainWindow.paml | 15 ++++++++++----- .../Context/PerspexWiringContext.cs | 7 ++++++- src/Markup/Perspex.Markup.Xaml/OmniXAML | 2 +- src/Perspex.Controls/ItemsControl.cs | 2 ++ .../Primitives/SelectingItemsControl.cs | 2 ++ 5 files changed, 21 insertions(+), 7 deletions(-) diff --git a/samples/XamlTestApplication/Views/MainWindow.paml b/samples/XamlTestApplication/Views/MainWindow.paml index 2c4525eb13..a85c949f69 100644 --- a/samples/XamlTestApplication/Views/MainWindow.paml +++ b/samples/XamlTestApplication/Views/MainWindow.paml @@ -2,8 +2,13 @@ xmlns="https://github.com/perspex" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Perspex Test Application" Height="350" Width="525" SizeToContent="WidthAndHeight" > - - + + + Hello + World + + + \ No newline at end of file diff --git a/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs index cee6e3689d..fb8c6e5836 100644 --- a/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs +++ b/src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs @@ -22,6 +22,7 @@ using Perspex.Platform; using Perspex.Styling; using Splat; using System; +using Perspex.Controls.Primitives; namespace Perspex.Markup.Xaml.Context { @@ -45,7 +46,11 @@ namespace Perspex.Markup.Xaml.Context var perspexPropertyBinder = new PerspexPropertyBinder(featureProvider.ConverterProvider); var typeRepository = new PerspexTypeRepository(xamlNamespaceRegistry, typeFactory, featureProvider, perspexPropertyBinder); - typeRepository.RegisterMetadata(new Metadata().WithMemberDependency(setter => setter.Value, setter => setter.Property)); + typeRepository.RegisterMetadata(new Metadata().WithMemberDependency(x => x.Value, x => x.Property)); + typeRepository.RegisterMetadata( + new Metadata() + .WithMemberDependency(x => x.SelectedIndex, x => x.Items) + .WithMemberDependency(x => x.SelectedItem, x => x.Items)); return new TypeContext(typeRepository, xamlNamespaceRegistry, typeFactory); } diff --git a/src/Markup/Perspex.Markup.Xaml/OmniXAML b/src/Markup/Perspex.Markup.Xaml/OmniXAML index 7b13ebcde0..1461be589a 160000 --- a/src/Markup/Perspex.Markup.Xaml/OmniXAML +++ b/src/Markup/Perspex.Markup.Xaml/OmniXAML @@ -1 +1 @@ -Subproject commit 7b13ebcde030df9f8d538917e57b3a34ea9edf32 +Subproject commit 1461be589a5d39d378fd177648c61a780271c742 diff --git a/src/Perspex.Controls/ItemsControl.cs b/src/Perspex.Controls/ItemsControl.cs index 83f86eba78..cdbf883d95 100644 --- a/src/Perspex.Controls/ItemsControl.cs +++ b/src/Perspex.Controls/ItemsControl.cs @@ -140,6 +140,8 @@ namespace Perspex.Controls /// The event args. protected virtual void ItemsChanged(PerspexPropertyChangedEventArgs e) { + System.Diagnostics.Debug.WriteLine($"{this.GetType().Name} set items"); + var incc = e.OldValue as INotifyCollectionChanged; if (incc != null) diff --git a/src/Perspex.Controls/Primitives/SelectingItemsControl.cs b/src/Perspex.Controls/Primitives/SelectingItemsControl.cs index 371a3a96a9..811cc7bb3e 100644 --- a/src/Perspex.Controls/Primitives/SelectingItemsControl.cs +++ b/src/Perspex.Controls/Primitives/SelectingItemsControl.cs @@ -299,6 +299,8 @@ namespace Perspex.Controls.Primitives /// The event args. private void SelectedIndexChanged(PerspexPropertyChangedEventArgs e) { + System.Diagnostics.Debug.WriteLine($"{this.GetType().Name} set selected index"); + var index = (int)e.OldValue; if (index != -1)