Лучший способ, который я могу себе представить, это использовать ValueConverter. Я не думаю, что это действительно отвечает на вопрос, так как они спрашивают в выражении связывания пути, которое я не видел возможным. Я не особенно люблю делать это таким образом, потому что это похоже на хак, но это работает по крайней мере для одностороннего связывания. Вот пример того, как вы можете это сделать:
XAML:
<StackPanel Name="stack">
<StackPanel.Resources>
<loc:OverriddenMyPropertyConverter x:Key="BaseMyProperty"/>
</StackPanel.Resources>
<TextBox Text="{Binding Path=MyProperty}"/>
<TextBox Text="{Binding Mode=OneWay, Converter={StaticResource BaseMyProperty}}"/>
</StackPanel>
DataContext из StackPanel является экземпляром MyClass. Первый TextBox связан со свойством MyClass.MyProperty, а второй TextBox будет связан со свойством MyBaseClass.MyProperty. Двухстороннее связывание будет немного более сложным, поскольку объект, который на самом деле связан со вторым TextBox, является объектом MyClass, а не объектом MyProperty.
Код:
class MyClass : MyBaseClass
{
string myProperty = "overridden";
public new string MyProperty
{
get { return myProperty; }
set { myProperty = value; }
}
}
class MyBaseClass
{
string baseProperty = "base";
public string MyProperty
{
get { return baseProperty; }
set { baseProperty = value; }
}
}
class OverriddenMyPropertyConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return (value as MyBaseClass).MyProperty;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}