Sto cercando di creare un UserControl riutilizzabile in WPF con un'etichetta e un controllo TextBox. Voglio aggiungere proprietà al mio UserControl per rendere più chiari i campi di testo di entrambi i controlli figlio fino al genitore per un facile collegamento. Ho letto che ho bisogno di un po 'di messa a fuoco aggiungendo i proprietari a DependencyProperties. Ecco il mio codice ora. Sembra vicino ma non del tutto corretto. Qualche idea?Controlli compositi WPF
Ecco il codice XAML:
<UserControl x:Class="MAAD.AircraftExit.Visual.LabelTextBox"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="20" Width="300">
<DockPanel>
<TextBlock Text="{Binding Path=Label, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" DockPanel.Dock="Left" TextAlignment="Right" Width="122" />
<TextBlock Text=": " DockPanel.Dock="Left"/>
<TextBox Text="{Binding Path=Text, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" />
</DockPanel>
</UserControl>
E il codice dietro:
public partial class LabelTextBox : UserControl
{
public static readonly DependencyProperty LabelProperty = DependencyProperty.Register("Label", typeof(string), typeof(LabelTextBox));
public string Label
{
get { return (string)GetValue(LabelProperty); }
set { SetValue(LabelProperty, value); }
}
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(LabelTextBox));
public string Text
{
get { return (string)GetValue(TextProperty); }
set { SetValue(LabelTextBox.TextProperty, value); }
}
public LabelTextBox()
{
InitializeComponent();
ClearValue(HeightProperty);
ClearValue(WidthProperty);
}
}
Edit: Ecco il codice di lavoro finale. Sono passato al binding delle fonti relative.
Ho provato la stessa cosa in un primo momento, assumendo che questo fosse il concetto di proprietario. Sfortunatamente mi sono imbattuto negli stessi problemi e ho finito col ricorrere all'utilizzo di binding. Inoltre, le mie proprietà di non dipendenza hanno una soluzione personalizzata diversa per propagare le notifiche di modifica delle proprietà. – jpierson