Browse Source

Still trying to get property dependencies working.

SelectedIndex isn't being set.
pull/227/head
Steven Kirk 11 years ago
parent
commit
b3af361686
  1. 15
      samples/XamlTestApplication/Views/MainWindow.paml
  2. 7
      src/Markup/Perspex.Markup.Xaml/Context/PerspexWiringContext.cs
  3. 2
      src/Markup/Perspex.Markup.Xaml/OmniXAML
  4. 2
      src/Perspex.Controls/ItemsControl.cs
  5. 2
      src/Perspex.Controls/Primitives/SelectingItemsControl.cs

15
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" >
<Grid RowDefinitions="Auto,*">
<ListBox SelectedIndex="0">
<ListBoxItem>Hello</ListBoxItem>
<ListBoxItem>World</ListBoxItem>
</ListBox>
<!--<Grid RowDefinitions="Auto,*">
<TabControl Grid.Row="1">
<TabItem Header="Buttons">
<StackPanel HorizontalAlignment="Center" Width="200" VerticalAlignment="Center">
@ -46,7 +51,7 @@
</TabItem>
<TabItem Header="Lists">
<StackPanel Orientation="Horizontal" VerticalAlignment="Center" HorizontalAlignment="Center">
<ListBox>
<ListBox SelectedIndex="0">
<ListBoxItem>
<StackPanel>
<TextBlock Text="Item 1" FontSize="24" />
@ -60,7 +65,7 @@
</StackPanel>
</ListBoxItem>
</ListBox>
<DropDown VerticalAlignment="Center">
<DropDown VerticalAlignment="Center" SelectedIndex="0">
<StackPanel>
<TextBlock Text="Item 1" FontSize="24" />
<TextBlock Text="Item 1 Value" />
@ -120,5 +125,5 @@
</Grid>
</TabItem>
</TabControl>
</Grid>
</Grid>-->
</Window>

7
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<Setter>().WithMemberDependency(setter => setter.Value, setter => setter.Property));
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);
}

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

@ -1 +1 @@
Subproject commit 7b13ebcde030df9f8d538917e57b3a34ea9edf32
Subproject commit 1461be589a5d39d378fd177648c61a780271c742

2
src/Perspex.Controls/ItemsControl.cs

@ -140,6 +140,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)

Loading…
Cancel
Save