Silverlight: обновить элемент шаблона списка - PullRequest
0 голосов
/ 03 мая 2009

У меня есть список и по событию клика я открываю новую панель, где я изменяю данные списка, точнее источник изображения. У меня есть проблема, как обновить список, чтобы иметь новую картинку. Заранее спасибо. Вот мой код:

<ListBox x:Name="lbNarudzbe" MouseLeftButtonUp="lbNarudzbe_MouseLeftButtonUp" HorizontalAlignment="Center" MaxHeight="600">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <Image Margin="0,5,0,0" Width="50" Height="50" HorizontalAlignment="Center" Source="{Binding Path=Picture}" />
                                <TextBlock HorizontalAlignment="Center" FontSize="23" Text="{Binding Path=UkupnaCijena}" Width="80"/>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>




public partial class Page : UserControl
    {
        ObservableCollection<Narudzba> narudzbe = new ObservableCollection<Narudzba>();

        public Page()
        {
            InitializeComponent();

            narudzbe.Add(new Narudzba());
            narudzbe.Add(new Narudzba());
            narudzbe.Add(new Narudzba());
            narudzbe.Add(new Narudzba());

            lbNarudzbe.ItemsSource = narudzbe;

        }





     public class Narudzba
            {
               //...
                public string Picture
                {
                    get { return "picture source"; }
                }.....

Ответы [ 2 ]

1 голос
/ 03 мая 2009


В основном, когда вы хотите обновить изображение в списке, вы обновляете свойство Picture вашего класса Narudzba, и поскольку ваш класс Narudzba не реализует интерфейс INotifyPropertyChanged, список не может обновить изображение. 1002 *

Вот код, который может помочь.

    public class Narudzba : System.ComponentModel.INotifyPropertyChanged
{
    public event System.ComponentModel.PropertyChangedEventHandler PropertyChanged;
    void Notify(string propName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new System.ComponentModel.PropertyChangedEventArgs(propName));
        }
    }

    string _picturesource;

    public string Picture
    {
        get { return _picturesource; }
        set 
        { 
            _picturesource = value;
            Notify("Picture");
        }
    }

    public Narudzba(string picturesource)
    {
        _picturesource = picturesource;
    }
  }
}

Тогда код события lbNarudzbe_MouseLeftButtonUp должен выглядеть следующим образом

    private void lbNarudzbe_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
    {
        Narudzba nb  = (Narudzba)lbNarudzbe.SelectedItem;
        nb.Picture = "http://somedomain.com/images/newpicture.jpg";            
    }

НТН.

0 голосов
/ 03 мая 2009

Хотя не уверен, но разве вы не можете иметь одинаковую привязку для объекта imageblock вне списка и того, что находится внутри него?

...