2010-11-30 9 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が空の場合、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キーワードを注意してください。

関連する問題