私は、ユーザーが入力した内容に基づいてデータベースからストリートネームが入力されるリストボックスを持つオートコンプリートテキストボックスを作成しています。私のアプリが起動されると、ユーザーはまだテキストボックスに何も入力していないので、プロパティのgetterはnullを返します。私が達成しようとしているのは、通りがapi呼び出しから返された後に何とかゲッターをリフレッシュすることです。私はまた働いていないように私のセッターにOnPropertyChanged
を持っています。助言がありますか?ありがとうございました。ICollectionViewプロパティでゲッターをリフレッシュすることはできますか?
public ICollectionView Streets
{
get { return streets; }
set
{
streets = value;
OnPropertyChanged("Streets");
Streets.Refresh();
}
}
(非常にうまく動作します)ここにリストに追加されている通り:
public void AddToList()
{
var streetNames = new ObservableCollection<Street>();
{
streetNames.Add(new Street() { StreetName = "Mockingbird Ln" });
streetNames.Add(new Street() { StreetName = "Shoeman Ln" });
streetNames.Add(new Street() { StreetName = "Gingerbread Drive" });
foreach (var street in StreetNames)
{
streetNames.Add(new Street() {StreetName = street});
}
};
streets = CollectionViewSource.GetDefaultView(streetNames);
streets.Filter = ContainsFilter;
}
リストボックスXAML:
<ListBox x:Name="StreetListBox" Visibility="Collapsed" Background="White" Margin="138,548,35,381"
ItemsSource="{Binding Path=Streets, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay, NotifyOnSourceUpdated=True, NotifyOnTargetUpdated=True}"
SelectedItem="{Binding Path=SelectedStreet}">
<ListBox.ItemTemplate>
<DataTemplate DataType="{x:Type System:String}">
<StackPanel>
<TextBlock Text="{Binding Path=StreetName}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
を、私は、IEnemerableに結合することによって、これを行うと – Paparazzi