J'ai un contrôle utilisateur personnalisé nommé champ:Silverlight contrôles personnalisés de l'utilisateur et la propriété Dépendance d'émission
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Name="LblName"/>
<TextBox Grid.Row="0" Grid.Column="1" HorizontalContentAlignment="Left" Name="TxtValue"/>
</Grid>
Dans le fichier CS I expose la propriété ci-dessous qui définit simplement la valeur « .text » de la zone de texte.
public static readonly DependencyProperty ValueProperty = DependencyProperty.Register(
"Value",
typeof(string),
typeof(Field),
new PropertyMetadata(
default(string),
(source, args) => (source as Field).TxtValue.Text = (string)args.NewValue
)
);
[Category("Custom")]
public string Value
{
get
{
return (string)this.GetValue(ValueProperty);
}
set
{
this.SetValue(ValueProperty, value);
}
}
Première question. Est-ce la manière correcte de propager les propriétés de dépendance du contrôle utilisateur enfant, de sauvegarder via le contrôle utilisateur parent afin qu'il puisse être défini à partir de la page xaml? J'ai jeté un coup d'œil sur le net, il n'y a pas grand-chose là-bas étant donné que c'est une chose assez primitive quand on écrit des contrôles personnalisés.
En donnant des détails autour de la vue d'ensemble, j'ai la page des détails du client, certains contrôles sont liés à l'objet client qui est contenu dans une collection observable. Si je change la valeur de la zone de texte (qui est contenue dans le contrôle de champ) sur la page de "xxxx" à "yyyy" je reçois toujours "xxxx". Il semble que quelque chose ne va pas quelque part autour du getter?