2013-09-14 4 views
0

Моя программа подключается к базе данных mysql, а затем сохраняет данные в виде списка. Я хочу отобразить рейтинг элемента в списке, который будет отображаться как изображение, а не число. Глядя на это response, я понял, как отображать разные изображения с помощью триггеров данных, но мне нужен способ указать диапазон чисел. Ex, 0-10 = 0stars.png, 11-50 = 1stars.png и т. Д.Изменить изображение списка на основе привязанного значения

Любая помощь будет принята с благодарностью.

Редактирование: После некоторого размышления я считаю, что я мог бы запустить функцию после загрузки списка, которая представляет собой цикл for, который получит значение из каждой строки в столбце, определит, в каком диапазоне номеров он находится, а затем повторно привяжите его к списку. Будет ли это эффективно?

+0

Создать конвертер и реализовать логику в конвертере. – PoweredByOrange

ответ

1

Вы можете сделать это с помощью преобразователя

  • свяжите ItemsSource в список ваших номеров
  • Написать рейтинговый конвертер для преобразования чисел в образа
  • изменить ItemTemplate для отображения изображения

eg

  • XAML

    <Window 
        Name="ThisWnd" 
        xmlns:local="clr-namespace:YourConverter's Namespace" <!-- the namespace of your converter. --> 
        ...> 
    
        <Window.Resource> 
         <local:RatingConverter x:Key="RatingConverter"/> 
        </Window.Resources> 
    
        <ListView ItemsSource="{Binding Items, ElementName=ThisWnd}"> 
         <ListView.ItemTemplate> 
          <DataTemplate> 
           <Image Source="{Binding Path=., Converter={StaticResource RatingConverter}}"> 
           </Image> 
          </DataTemplate> 
         </ListView.ItemTemplate> 
    
        </ListView> 
    </Window> 
    
  • код за

    public partial class MainWindow : Window 
    { 
        public List<int> Items 
        { 
         get; 
         set; 
        } 
    } 
    
    [ValueConversion(typeof(int), typeof(Image))] 
    public class RatingConverter : IValueConverter 
    { 
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
        { 
         int rate = (int)value; 
         string imagePath = "1star.png"; 
         if (rate > 10) 
         { 
          imagePath = "2star.png"; 
         } 
    
         return new BitmapImage(new Uri(imagePath, UriKind.Relative)); 
        } 
    
        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
        { 
         throw new NotImplementedException(); 
        } 
    } 
    
Смежные вопросы