Концепция наблюдаемой коллекции в C # - PullRequest
1 голос
/ 22 февраля 2011

Как я могу использовать свойство в обработчике событий, которое определено в классе, который используется внутри наблюдаемой коллекции.

Мой код такой:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using System.IO;

namespace BindingImages
{
    class MyImage
    {
        private string _path;

        public MyImage(string path)
        {
            _path=path;
        }

        public string Path
        {
            get { return _path;}

        }

    }

    class MyPhotos:ObservableCollection<MyImage>
    {

        DirectoryInfo _directory;



        public string Path
        {
            set
            {
                _directory = new DirectoryInfo(value);
                Update();

            }
            get { return _directory.FullName; }

        }

       private void Update()
       {
           foreach (FileInfo f in _directory.GetFiles("*.jpg"))
           {
               Add(new MyImage(f.FullName));
           }
       }


    }


}

Этокод моего окна:

namespace BindingImages
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            this.DataContext = new MyPhotos();
            InitializeComponent();
        }

        private void listbox1_SelectionChanged(object sender,SelectionChangedEventArgs args)
        {
            string selection=listbox1.SelectedItem.ToString();
            if ((selection != null) && (selection.Length != 0))
                    {
                        ImageSourceConverter imgConv = new ImageSourceConverter();
                        ImageSource imagesource=(ImageSource)imgConv.ConvertFromString(selection);
                        img.Source = imagesource;    // here i'm having a problem
                    }

        }
    }
}

Это мой код Xaml:

<Window x:Class="BindingImages.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:ph="clr-namespace:BindingImages"
    Title="Window1" Height="300" Width="300">
    <Window.Resources>
        <ph:MyPhotos x:Key="Photo" Path="D:\Photos" />

    </Window.Resources>
        <Grid>
        <TextBlock FontSize="26"  HorizontalAlignment="Center">Pick an Image From below List</TextBlock>
        <ListBox Height="250" Width="420" Margin="10,0,10,480" SelectionChanged="listbox1_SelectionChanged"   Name="listbox1" ItemsSource="{Binding Source={StaticResource Photo}}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Image Source="{Binding Path}" Width="100" Height="100"></Image>
                </DataTemplate>

            </ListBox.ItemTemplate>

        </ListBox>
            <Image  Height="250" Margin="155,50,12,14" Name="img" Stretch="Fill" ></Image>
    </Grid>
</Window>

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

Я сталкиваюсь с проблемой при обработке события, так как вы видите код для обработки события. ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...