Al desarrollar UserControls de WPF, ¿cuál es la mejor manera de exponer una DependencyProperty de un control secundario como DependencyProperty de UserControl? El siguiente ejemplo muestra cómo exponer actualmente la propiedad Text de un TextBox dentro de un UserControl. Seguramente hay una manera mejor/más simple de lograr esto?Exponer DependencyProperty
<UserControl x:Class="WpfApplication3.UserControl1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Background="LightCyan">
<TextBox Margin="8" Text="{Binding Text, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
</StackPanel>
</UserControl>
using System;
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication3
{
public partial class UserControl1 : UserControl
{
public static DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(UserControl1), new PropertyMetadata(null));
public string Text
{
get { return GetValue(TextProperty) as string; }
set { SetValue(TextProperty, value); }
}
public UserControl1() { InitializeComponent(); }
}
}
esta manera funciona mejor en Silverlight 4, donde no hay 'FindAncestor' –
Esto funcionó para mí, sin embargo, no parece que pueda use el mismo 'x: Class' y' x: Name'. Tenía que tener una clase como 'WpfApplication1.SliderLabel' y le di un nombre como' SliderLabelControl'. De lo contrario, se quejaba de que el nombre ya existía. –