IValueConverter使用查找集合



我正在使用这样的转换器:

public class BreedConverter : IValueConverter
{
static ObservableCollection<Breed_> Breeds = Breed_.GetBreeds();
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null && Breeds.Count > 0)
{
short breedID = (short)value;
Breed_ breed = Breeds.Single(s => s.BreedID == breedID);
return (string)breed.Breed;
}
else
return "";
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}

Bredes集合是从SQL Server数据库中检索的。我想检索一次,然后用它来进行转换。我不想每次需要转换时都去数据库。

有没有更好的方法可以做到这一点,例如ResourceDictionary(我不知道如何在这种情况下使用它,因为我还是个傻瓜(?

这就是我能够开始工作的地方。正如@Darthchai所提到的,我已经在类/窗口中创建了集合。但是,我不知道如何使用INotifyPropertyChanged来让特定的TextBlock知道如何进行转换。我毕竟是个傻瓜我所能做的——我不知道这是否是正确的方法——是使用TextBlock的Loaded事件来进行转换。这是代码:

private void BreedTextBlock_Loaded(object sender, RoutedEventArgs e)
{
TextBlock textBlock = (TextBlock)sender;
if (textBlock != null && Breeds.Count > 0)
{
try
{
short breedID = short.Parse(textBlock.Text);
Breed_ breed = Breeds.Single(s => s.BreedID == breedID);
textBlock.Text = (string)breed.Breed;
}
catch
{
}
}
return;
}

最新更新