2010-11-30 3 views
0

По-видимому, я ничего не понимаю о привязке ListBox элементы управления данными.Silverlight: сложно связать данные

Вот ListBox, который связывается со свойством в коде-за:

 <ListBox ItemsSource="FavoriteFilters" 
       x:Name="favoriteFiltersList" 
       Visibility="{Binding FavoriteFilters.IsEmpty, Converter={StaticResource visibilityConverter}}"> 

      <ListBox.ItemTemplate> 
       <DataTemplate> 
        <my:FavoriteFilterLink /> 
       </DataTemplate> 
      </ListBox.ItemTemplate> 
     </ListBox> 

Когда я делаю это, ListBox появляется с одного элемента, заполненного резервными значениями, даже если исходный товар пуст , Это происходит независимо от того, что я установил ItemsSource, например ItemsSource="TotallyInvalidProperty". Однако, если ItemsSource пуст, ListBox исчезает.

Код позади:

public ObservableCollection<FavoriteFilter> FavoriteFilters 
    { 
     get 
     { 
      return PlumData.FavoriteFilters; 
     } 
    } 

PlumData:

private static ObservableCollection<FavoriteFilter> _favoriteFilters = new ObservableCollection<FavoriteFilter>(); 
    public static ObservableCollection<FavoriteFilter> FavoriteFilters 
    { 
     get 
     { 
      return _favoriteFilters; 
     } 
    } 

Я не понимаю, почему это не работает. Однако, когда я делаю это в коде, он отлично работает:

void BottomFavoritesBar_Loaded(object sender, RoutedEventArgs e) 
    { 
     favoriteFiltersList.ItemsSource = FavoriteFilters; 
    } 

Что я делаю неправильно? Я использую SL4.

ответ

1

с верхней частью моей головы, вы не должны установить привязку следующим образом:

<ListBox ItemsSource="{Binding FavoriteFilters}" 
      x:Name="favoriteFiltersList" 
      Visibility="{Binding FavoriteFilters.IsEmpty, Converter={StaticResource visibilityConverter}}"> 

ПРИМЕЧАНИЯ Binding ключевого слова.

Смежные вопросы