Модераторы: gambit, Kefir, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> CheckBoxList, Silverlight 4 
V
    Опции темы
Ronin08
Дата 31.3.2011, 13:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: нет
Всего: 1



Доброго времени суток! 
Пытаюсь сделать CheckBoxList
Код

 <ListBox x:Name="lst" Grid.Column="1"
             ItemsSource="{Binding Path=ItemsLst}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding Checked, Mode=TwoWay}" 
                          Content="{Binding TitleCheck}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

Код


 public DataItems()
        {
            ItemsLst = new ObservableCollection<ItemsChecked>();

            ItemsLst.Add(new ItemsChecked(true, "test1"));
            ItemsLst.Add(new ItemsChecked(true, "test2"));
            ItemsLst.Add(new ItemsChecked(false, "test3"));
            ItemsLst.Add(new ItemsChecked(true, "test4"));
        }

public class ItemsChecked
    {
        public Boolean Checked { get; set; }
        public String TitleCheck { get; set; }

        public ItemsChecked(Boolean _check, String _name)
        {
            Checked = _check;
            TitleCheck = _name; 
        }
    }


Проблема в том что после переустановки чекбоксов, не меняется источник данных!
Пожалуйста не давайте ссылки на ресурсы где используется дополнительная библиотека GalaSoft.MvvmLight.SL4.dll, например 
как здесь


Это сообщение отредактировал(а) Ronin08 - 31.3.2011, 13:09
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
-Mikle-
Дата 31.3.2011, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Невидимка Vingrad'а
***


Профиль
Группа: Экс. модератор
Сообщений: 1672
Регистрация: 22.6.2003
Где: Казахстан, Астана

Репутация: 13
Всего: 59



Ваш код работает у меня.

Только пару добавлений (не влияют на работоспособность), чтоб протестировать.
Код

    public partial class MainPage : UserControl
    {
        public MainPage()
        {
            InitializeComponent();

            var ItemsLst = new ObservableCollection<ItemsChecked>();

            ItemsLst.Add(new ItemsChecked(true, "test1"));
            ItemsLst.Add(new ItemsChecked(true, "test2"));
            ItemsLst.Add(new ItemsChecked(false, "test3"));
            ItemsLst.Add(new ItemsChecked(true, "test4"));

            lst.ItemsSource = ItemsLst;
        }

        private void Button_Click(object sender, RoutedEventArgs e)
        {
            foreach (var item in lst.ItemsSource)
            {
            }
        }
    }

    public class ItemsChecked
    {
        public Boolean Checked { get; set; }
        public String TitleCheck { get; set; }

        public ItemsChecked(Boolean _check, String _name)
        {
            Checked = _check;
            TitleCheck = _name;
        }
    }



--------------------
Если тебе плюют в спину, значит ты впереди...
PM   Вверх
Ronin08
Дата 31.3.2011, 15:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: нет
Всего: 1



-Mikle-, спасибо за ответ! Да chlst .ItemsSource изменяется верно, но при абстрагировании проблемы я не указал возможно главное.
выложу более полный xaml код

Код

<Grid x:Name="LayoutRoot" Background="White">
        
        <Grid.Resources>
            <nspace:DataItems x:Key="myData"/>
        </Grid.Resources>
        <Grid.DataContext>
            <Binding Source="{StaticResource myData}"/>
        </Grid.DataContext>
        
        <ListBox x:Name="lst" ItemsSource="{Binding Path=ItemsLst, Mode=OneWay}"
                 DisplayMemberPath="Checked">
        </ListBox>
        
        <ListBox x:Name="chlst" Grid.Column="1"
             ItemsSource="{Binding Path=ItemsLst}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <CheckBox IsChecked="{Binding Checked, Mode=TwoWay}" 
                          Content="{Binding TitleCheck}"/>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
        
</Grid>


здесь у lst и chlst одинаковый источник данных, как сделать так, чтобы при переустановке чекбоксов в chlst изменялись бы значения в lst

Это сообщение отредактировал(а) Ronin08 - 31.3.2011, 15:36
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
SergeyLoginov
Дата 31.3.2011, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 28.9.2009
Где: Иваново

Репутация: 4
Всего: 4



Для этого класс ItemsChecked должен реализовывать интерфейс INotifyPropertyChanged. В сеттерах свойств класса соответственно надо возбужать событие-уведомление об изменении свойства. Либо же ItemsChecked унаследовать от DependencyObject и свойство Checked сделать DependencyProperty. Вам лучше, конечно, первый вариант использовать в данном случае.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | WPF и Silverlight | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.