Silverlight: сложно с привязкой данных - PullRequest
0 голосов
/ 01 декабря 2010

Видимо, я не понимаю что-то о привязке 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 Ответ

1 голос
/ 01 декабря 2010

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

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

обратите внимание на ключевое слово Binding.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...