right before I want to say: please do not offer alternative solutions, unless you can execute it without changing the types that have the BaseXXXXXX pattern
that this behavior is beyond bewilderment, as far as I know, it would seem that using the new keyword to hide a property in C # means that WinRT XAML (Windows8, Metro, Windows Store app) bindings no longer function correctly. I have no idea why this is.
Here is an example:
WITH#
namespace WinRtSandbox { public class BaseClass { public string Property1 { get; set; } public int[] Property2 { get; set; } public object Property3 { get; set; } } public class ModifiedClass : BaseClass { public new string Property1 { get; set; } public new long[] Property2 { get; set; } public new string Property3 { get; set; } } public sealed partial class MainPage : Page { public BaseClass Normal { get; set; } public ModifiedClass Modified { get; set; } public MainPage() { this.Normal = new BaseClass { Property1 = "WTF", Property2 = new[] { 2, 3, 4 }, Property3 = "Work?" }; this.Modified = new ModifiedClass { Property1 = "WTF", Property2 = new[] { 2L, 3L, 4L }, Property3 = "Work?" }; this.InitializeComponent(); } } }
WinRT XAML:
<Page x:Class="WinRtSandbox.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:WinRtSandbox" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" DataContext="{Binding RelativeSource={RelativeSource Self}}" mc:Ignorable="d"> <Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}"> <Border Background="#22000000" Padding="40" Width="400" Height="500"> <Grid> <Grid.Resources> <Style TargetType="Rectangle"> <Setter Property="Height" Value="1"/> <Setter Property="HorizontalAlignment" Value="Stretch"/> <Setter Property="Margin" Value="0,15,0,15"/> <Setter Property="Fill" Value="{StaticResource ApplicationForegroundThemeBrush}"/> </Style> </Grid.Resources> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <StackPanel Grid.Column="0"> <ItemsControl> <TextBlock Text="this.Normal"/> <Rectangle/> <TextBlock Text="this.Normal.Property1"/> <Rectangle/> <TextBlock Text="this.Normal.Property2"/> <Rectangle/> <TextBlock Text="this.Normal.Property3"/> </ItemsControl> <Rectangle Fill="Red"/> <ItemsControl> <TextBlock Text="this.Modified"/> <Rectangle/> <TextBlock Text="this.Modified.Property1"/> <Rectangle/> <TextBlock Text="this.Modified.Property2"/> <Rectangle/> <TextBlock Text="this.Modified.Property3"/> </ItemsControl> </StackPanel> <StackPanel Grid.Column="1"> <ItemsControl DataContext="{Binding Normal}"> <TextBlock Text="{Binding}"/> <Rectangle/> <TextBlock Text="{Binding Property1}"/> <Rectangle/> <TextBlock Text="{Binding Property2}"/> <Rectangle/> <TextBlock Text="{Binding Property3}"/> </ItemsControl> <Rectangle Fill="Red"/> <ItemsControl DataContext="{Binding Modified}"> <TextBlock Text="{Binding}"/> <Rectangle/> <TextBlock Text="{Binding Property1}"/> <Rectangle/> <TextBlock Text="{Binding Property2}"/> <Rectangle/> <TextBlock Text="{Binding Property3}"/> </ItemsControl> </StackPanel> </Grid> </Border> </Grid> </Page>
A too wrong result looks something like this: 
in principle, each of these blank lines should be filled. . Any of you XAML hot dogs have an idea why these bindings fail, and is there anything that can be done to get around what I can only suppose is a disgusting mistake? Any help or understanding would be greatly appreciated, thanks in advance ... -ck
update: forgot dump output
Error: BindingExpression path error: 'Property2' property not found on 'WinRtSandbox.ModifiedClass'. BindingExpression: Path='Property2' DataItem='WinRtSandbox.ModifiedClass'; target element is 'Windows.UI.Xaml.Controls.TextBlock' (Name='null'); target property is 'Text' (type 'String') Error: BindingExpression path error: 'Property3' property not found on 'WinRtSandbox.ModifiedClass'. BindingExpression: Path='Property3' DataItem='WinRtSandbox.ModifiedClass'; target element is 'Windows.UI.Xaml.Controls.TextBlock' (Name='null'); target property is 'Text' (type 'String')
Update:
Error filed with Microsoft: https://connect.microsoft.com/VisualStudio/feedback/details/782993/binding-a-property-that-hides-another-in-winrt-xaml , so we will see how this happens