Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.03.2013, 15:15   #1
inmyacid
Пользователь
 
Аватар для inmyacid
 
Регистрация: 17.04.2012
Сообщений: 42
По умолчанию Приивязка данных к Статичному ресурсу

Привет!
В XAML создал список в ресурсах и добавил туда один элемент.
Код:
  
    <Window.Resources>
        <List  x:Key="lst">
            <ListItem>
                <Paragraph>fdfdf</Paragraph>
            </ListItem>
        </List>
    </Window.Resources>
Потом создал текстовое поле и хочу забиндить туда число элементов следующим образом. (в коде xaml Опустил параметры отображения )

Код:
<TextBlock Name="textBlock6"  Text="{Binding Source={StaticResource lst}, Path=ListItems/Count}" />
Но не работает биндинг. То что объект успешно существует я проверил в коде так
Код:
  public List aaa;
aaa=(List)FindResource("lst");
            Console.WriteLine(aaa.ListItems.Count);
Path=ListItems/Count пришлось прописывать вручную, т.к. свойста Count в окне биндинга не обнаружилось почему то, хотя в коде полноценно присутствует.
Есть догадки почему не работает?
inmyacid вне форума Ответить с цитированием
Старый 23.03.2013, 16:06   #2
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
Path=ListItems/Count
Путь пишется через точку, а не через слэш. Исправьте на ListItems.Count
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 23.03.2013, 16:29   #3
inmyacid
Пользователь
 
Аватар для inmyacid
 
Регистрация: 17.04.2012
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Путь пишется через точку, а не через слэш. Исправьте на ListItems.Count
Ок, а почему когда я в коде добавляю итемы созданного в ресурсе листа, то значение каунт не обновляется? Есть ли способ обновить значение непосредственно изменяя данные в статичном ресурсе или без интерфейса INotifyPropertyChanged не обойтись? Разве статичные ресурсы не должны сообщать о своих обновлениях сами?
inmyacid вне форума Ответить с цитированием
Старый 23.03.2013, 16:57   #4
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Цитата:
Разве статичные ресурсы не должны сообщать о своих обновлениях сами?
Не должны, как не должны и меняться вообще. Для этого есть динамические ресурсы.
А чем вообще вызвана необходимость List хранить в виде ресурса?
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 23.03.2013, 17:17   #5
inmyacid
Пользователь
 
Аватар для inmyacid
 
Регистрация: 17.04.2012
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Не должны, как не должны и меняться вообще. Для этого есть динамические ресурсы.
А чем вообще вызвана необходимость List хранить в виде ресурса?
Собственно только моими исследованиями в области биндинга. А если быть точнее то у меня не получается привязать к List(у) созданному в классе окна и я решил проверить на вообще простой схеме со статическим ресурсом. Ну вот создал я лист и сделал свойством.
Код:
 
static ListItem z = new ListItem(new Paragraph(new Run("aaaa")));
List a1 = new List(z);
         public List aaa {
             get { return a1; }
             set { a1 = value; }
         }
Не говоря даже о том что в инициализации формы указал this.DataContext=this; на всякий случай.
и вот вам пожалуйста тот же самый textblock со слегка измененным кодом уже не работает
Код:
<TextBlock  Name="textBlock6" Text="{Binding aaa, Path=ListItems.Count}"  />
Хотя хочу заметить что если убрать свойство Path то вполне вызывается метод AsString() тоесть XAML нашел объект но по какойто причине не отображает его свойсто

Последний раз редактировалось inmyacid; 23.03.2013 в 17:22.
inmyacid вне форума Ответить с цитированием
Старый 23.03.2013, 17:28   #6
Luuzuk
Форумчанин
 
Аватар для Luuzuk
 
Регистрация: 18.01.2012
Сообщений: 975
По умолчанию

Для начала прочтите несколько статей об основах биндинга http://msdn.microsoft.com/ru-ru/library/ms752347.aspx
Благодарить в репутацию. Проклинать — туда же
Luuzuk вне форума Ответить с цитированием
Старый 23.03.2013, 17:35   #7
inmyacid
Пользователь
 
Аватар для inmyacid
 
Регистрация: 17.04.2012
Сообщений: 42
По умолчанию

Цитата:
Сообщение от Luuzuk Посмотреть сообщение
Для начала прочтите несколько статей об основах биндинга http://msdn.microsoft.com/ru-ru/library/ms752347.aspx
Читал же, если вы приципились к тому что я указал DataContext то сообщаю что это было просто на всякий случай. Ошибку я так и не смог определить
inmyacid вне форума Ответить с цитированием
Старый 27.03.2013, 17:24   #8
inmyacid
Пользователь
 
Аватар для inmyacid
 
Регистрация: 17.04.2012
Сообщений: 42
По умолчанию

Вопрос решен. Статью все же перечитал, нашел ошибку. Спасибо
inmyacid вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как ограничить доступ к интернет ресурсу (сайте Одноклассники) LIK44 Помощь студентам 15 20.12.2011 10:39
как совместить вставку данных формы с копированием данных самого листа? serikov Microsoft Office Excel 0 11.10.2011 10:20
сортировка данных (пересчет возможных вариантов комбинаций, перенос данных в таблицу) Vitalik85 Microsoft Office Excel 4 12.08.2009 00:30
Авторизация NTLM для доступа к интранет-ресурсу (http). Евгений Буторин Работа с сетью в Delphi 0 01.03.2007 14:14