显然我不明白将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。
答案 0 :(得分:1)
离开我的头顶,你不需要像这样设置绑定:
<ListBox ItemsSource="{Binding FavoriteFilters}"
x:Name="favoriteFiltersList"
Visibility="{Binding FavoriteFilters.IsEmpty, Converter={StaticResource visibilityConverter}}">
请注意Binding
关键字。