J'ai un contrôle utilisateur de navigation de données dans Silverlight qui ouvre une fenêtre enfant dans laquelle l'utilisateur peut entrer des critères de recherche et quand il appuie sur 'Appliquer', il est supposé mettre à jour la propriété ViewModel (motif MVVM.)Relier la propriété de dépendance Silverlight Custom Control à la propriété Modèle
Les liens sont: SearchDialog < -> DataNavigator < -> MyView < -> MyViewModel
La propriété de dépendance à SearchDialog semble fonctionner, quand je mis sa valeur, il apparaît dans DataNavigator; Toutefois, lorsque la propriété de dépendance change, aucune notification ne semble être envoyée par DataNavigator à MyView/MyViewModel.
SearchDialog dérive de ChildWindow:
public string Search
{
get { return (string)GetValue(SearchProperty); }
set { SetValue(SearchProperty, value); }
}
public static readonly DependencyProperty SearchProperty =
DependencyProperty.Register("Search", typeof(string), typeof(SearchDialog),
new PropertyMetadata(null));
DataNavigator dérive de UserControl:
public Binding Search { get; set; }
private void DataNavigator_Loaded(object sender, Windows.RoutedEventArgs e)
{
if (Search != null)
this._searchDialog.SetBinding(SearchDialog.SearchProperty, Search);
}
MyView dérive de SilverlightFX.UserInterface.Navigation.Page:
<DataNavigator MovePreviousAction="$model.MovePrevious()"
CurrentIndex="{Binding CurrentIndex, Mode=TwoWay}"
MoveNextAction="$model.MoveNext()"
SaveAction="$model.SaveChanges()"
IsLoading="{Binding IsLoading, Converter={StaticResource VisibilityConverter}}"
Search="{Binding SearchString, Mode=TwoWay}"/>
MyViewModel dérive de ViewModel :
public string SearchString
{
get { return this._search; }
set
{
if(value != this._search)
{
this._search = value;
this.RaisePropertyChanged("SearchString");
}
}
}
J'ai essayé pendant des heures pour trouver le problème mais n'ai pas eu de succès; Quelqu'un voit-il le problème? Merci à l'avance,
Le xaml pour ma vue est le DataNavigator? Est-ce la vue ou est le DataNavigator dans la vue? Je ne vois pas non plus de relation entre la propriété SearchString dans votre machine virtuelle et la liaison de recherche dans la vue (ou est-ce que DataNavigator?). – Bryant
@Brian Je n'ai coupé que le morceau de MyView, je peux poster le reste mais cela ne semble pas pertinent à la question. Le paramètre de recherche de DataNavigator (je crois) est lié à SearchString dans la machine virtuelle et que (encore, je crois) est lié à la propriété de dépendance de SearchDialog.Je pourrais être déroutant quelque chose ici (nouveau aux PDD) ainsi si je suis, suggérez svp un changement que je pourrais faire. –
Ok, je le vois maintenant. Pas sûr que cela fonctionnera puisque vous liez une chaîne à une liaison. Je pense que la propriété de recherche doit être une chaîne pour que cette liaison fonctionne. – Bryant