Ho una proprietà di dipendenza stringa (SearchText), quando aggiornata, è necessario aggiornare una proprietà di dipendenza della raccolta (risultati).
mia collezione dp:Aggiornamento di una proprietà di dipendenza da un'altra
public IEnumerable<string> Results{
get { return (IEnumerable<string>) GetValue(ResultsProperty); }
set { SetValue(ResultsProperty, value); }
}
public static readonly DependencyProperty ResultsProperty=
DependencyProperty.Register("Results", typeof(IEnumerable<string>), typeof(MainWindowVM), new UIPropertyMetadata(new List<string>()));
ho provato questo senza fortuna. ho inserito un breakpoint nella riga Results = .... e non è mai stato colpito.
public string SearchText{
get { return (string) GetValue(SearchTextProperty); }
set {
Results =
from T in Tree.GetPeople(value)
select T.FullName;
SetValue(SearchTextProperty, value);
}
}
public static readonly DependencyProperty SearchTextProperty=
DependencyProperty.Register("SearchText", typeof(string), typeof(MainWindowVM), new UIPropertyMetadata(""));
XAML:
<TextBox DockPanel.Dock="Top" Text="{Binding SearchValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
<ListBox DockPanel.Dock="Top" ItemsSource="{Binding NameResults}" SelectedItem="{Binding Search}" />
-1, questo si romperà vincolante per la proprietà 'secondo' perché ImpostaValore verrà utilizzata al posto di SetCurrentValue (vedi http://stackoverflow.com/ domande/4230698/cosa-la-differenza-tra-dipendenza-proprietà-setvalue-SetCurrentValue). – Benlitz
Vero oggi, ti concederò. Tuttavia, al momento in cui questa risposta è stata scritta, .NET Framework 3.5 era la versione più recente che non aveva un membro SetCurrentValue. (rif: https://msdn.microsoft.com/en-us/library/system.windows.dependencyobject_members(v=vs.90).aspx) Vale la pena un commento o una risposta aggiuntiva per modernizzare, ma IMHO non garantisce un voto negativo. –