Получить значение объекта из элемента списка - PullRequest
0 голосов
/ 14 февраля 2012

В настоящее время я занимаюсь разработкой приложения для Windows Phone 7.0 на C #.Я получил список, элементы которого основаны на результатах службы WCF.Я создал свой собственный объект, который содержит несколько значений, которые были извлечены из базы данных.Проблема в том, что я не знаю, как изменить содержимое каждого элемента списка, в зависимости от значений параметров этих элементов, которые были получены с помощью веб-службы.

Структура:

  • Пользователь заходит на страницу XAML
  • Открывается соединение между клиентом и веб-сервисом
  • Веб-сервис возвращает List<Friend> Важный параметр в Friend называется Verified
  • Элементы списка установлены с помощью: lstFriends.ItemsSource = e.Result;

Что я хочу сделать:

  • Я хочу сделатьотметьте каждый элемент списка после параметра Verified и проверьте его значение.
  • В зависимости от того, является ли параметр истинным или ложным, текстовый блок внутри элемента списка должен иметь другой текст.

Спасибо

1 Ответ

1 голос
/ 14 февраля 2012

Это, вероятно, уродливый способ сделать это без кода, но вы можете создать шаблон для вашего списка, который включает в себя два текстовых блока (что-то), например:

<Style x:Key="ListBoxItemStyle1" TargetType="ListBoxItem">
        <Setter Properties... />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBoxItem">
                    <TextBlock Text="Verified" Visibility={Binding Verified, Converter="{StaticResource BoolToVisibilityConverter}"  />
                    <TextBlock Text="Not Verified" Visibility={Binding Verified, Converter="{StaticResource ReverseBoolToVisibilityConverter}" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

ВыЗатем потребуется написать два конвертера: BoolToVisibilityConverter, чтобы изменить логическое значение Verified на Visible, если True, и Collapsed, если False для первого текстового блока, и ReverseBoolToVisibilityConverter, чтобы изменить логическое значение Verified на Visible, если False, и Collapsed, если True, на втором тексте.блок.Таким образом, один текстовый блок всегда будет виден в элементе списка, а другой всегда будет свернут, в зависимости от значения свойства Verified.

Если вы не знаете, как выполнять преобразование значений, вы можете посмотреть HERE .

Это не проверено и это не весь код, который вам нужен, но он должен работать.Это предполагает, что два разных текстовых блока всегда будут содержать один и тот же текст и что свойство Verified является логическим свойством, если нет, то вы можете найти другой способ сделать это.

Если подумать, вы можете просто сделать ОДИН конвертер значений и один текстовый блок и преобразовать значение Verified в текст, который вы хотите.Это было бы проще.

<TextBlock Text="{Binding Verified, Converter="{StaticResource VerifiedToTextConverter}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...