Silverlight:数据绑定很困难

时间:2010-11-30 23:12:29

标签: c# silverlight user-interface data-binding

显然我不明白将ListBox控件绑定到数据的事情。

这是一个绑定到代码隐藏中的属性的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 个答案:

答案 0 :(得分:1)

离开我的头顶,你不需要像这样设置绑定:

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

请注意Binding关键字。