Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
 
Mihan8694
0 / 0 / 0
Регистрация: 25.01.2016
Сообщений: 20
1

Получить данные элемента коллекции ItemsControl по которому был щелчок мышью

16.12.2016, 14:54. Просмотров 287. Ответов 2
Метки нет (Все метки)

Разметка страницы:

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<Grid>
<ScrollViewer>
    <ItemsControl x:Name="ContentList" ItemsSource="{Binding}" >
        <ItemsControl.ItemTemplate>
            <DataTemplate DataType="local:Content">
                <Grid Margin="0,2.5" MouseLeftButtonUp="Grid_MouseLeftButtonUp" >
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="2*" />
                        <ColumnDefinition Width="5" />
                        <ColumnDefinition Width="4*" />
                    </Grid.ColumnDefinitions>
                    <Grid.ContextMenu>
                        <ContextMenu>
                            <MenuItem x:Name="Open_MenuItem" Header="Открыть" />
                            <MenuItem x:Name="Rename_MenuItem" Header="Переименовать" />
                            <MenuItem x:Name="Delete_MenuItem" Header="Удалить" />
                        </ContextMenu>
                    </Grid.ContextMenu>
                    <Image HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Source="{Binding Bitmap}" />
                    <TextBlock HorizontalAlignment="Stretch" Text="{Binding Name}" Grid.Column="2" VerticalAlignment="Stretch" TextTrimming="CharacterEllipsis"  />
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</ScrollViewer>
</Grid>
Код заполнения списка:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
private ObservableCollection<Content> ContentList;
 
private ObservableCollection<Content> get_content(string MyDirectory)
{
    ObservableCollection<Content> _content_list = new ObservableCollection<Content>();
 
    try
    {
        foreach (string _file_path in Directory.GetFiles(MyDirectory))
        {
            _content_list.Add(new Content(_file_path));
        }
    }
    catch { }
 
    return _content_list;
}
 
private void content_Filling()
{
    ContentList = GetContent("Путь к папке из которой берутся файлы");
}

Код элемента "Content":
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class Content
{
    public Content(string FilePath)
    {
        file_path = FilePath;
    }
 
    string file_path;
    string icon_path
    {
        get
        {
            return Path.GetDirectoryName(file_path)+"icon.tmp";
        }
    }
 
    public BitmapImage Bitmap//получение иконки файла
    {
        get{ return bitmap(file_path); }
    }
 
    public string Name
    {
        get { return Path.GetFileName(file_path); }
    }
 
    private BitmapImage bitmap(string FilePath)//получение иконки файла
    {
        BitmapImage _bitmap = new BitmapImage();
        FileStream _stream = new FileStream(FilePath, FileMode.Open, FileAccess.Read);
 
        try
        {
            using (_stream)
            {
                _bitmap.BeginInit();
                _bitmap.CacheOption = BitmapCacheOption.OnLoad;
                _bitmap.StreamSource = _stream;
                _bitmap.EndInit();
                _bitmap.Freeze();
            }
        }
        catch
        {
            if (File.Exists(icon_path))
            {
                File.Delete(icon_path);
            }
 
            _stream.Close();
 
            Icon.ExtractAssociatedIcon(FilePath).ToBitmap().Save(icon_path);
 
            _bitmap = bitmap(icon_path);
        }
 
        return _bitmap;
    }
}
Как мне получить элемент Content или узнать его имя (Name), в котором я выбрал из выпадающего меню, например:

"Открыть"
XML
1
<MenuItem x:Name="Open_MenuItem" Header="Открыть" />
"Переименовать"
XML
1
<MenuItem x:Name="Rename_MenuItem" Header="Переименовать" />
"Удалить"
XML
1
<MenuItem x:Name="Delete_MenuItem" Header="Удалить" />
или просто щелкнул по нему мышью
XML
1
MouseLeftButtonUp="Grid_MouseLeftButtonUp"
-------------------
При использовании ListBox-а получить элемент коллекции можно так:
C#
1
2
3
4
5
private string ElementName()
{
    Content _select_content = (Content)ContentList.SelectedItem;
    return _select_content.Name;
}
но нужен именно ItemsControl!
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2016, 14:54
Ответы с готовыми решениями:

Получить данные из URL, по которому был вызван swf файл
Не раз видел, что некоторые флеш ролики на сайта вызываются по адресу, вроде этого: ...

Как отследить, на какой категории был сделан щелчок мышью, и скрыть блок?
Здравствуйте! На сайте реализован слайдинг категорий, когда щелкаешь по одной категории, то...

Как получить номер (или текст) узла TreeView, по которому был Click
Доброго времени суток! Как можно получить номер(или текст) узла дерева, по которому я &quot;кликнул&quot;?...

Как получить id элемента по которому кликнули?
Подскажите кто знает, как получить id элемента по которому кликнули. Onclick в элементе не указан...

Как получить id элемента по которому кликнули
Добрый день форумчане. Мне нужно сделать добавление нового элемента после элемента по которому...

2
I2um1
Злой няш
1447 / 1134 / 381
Регистрация: 05.04.2010
Сообщений: 1,975
16.12.2016, 15:08 2
Вместо MouseLeftButtonUp привяжи команду на событие/кнопку, а параметром в команду передай, что нужно.
1
nicolas2008
528 / 414 / 134
Регистрация: 30.04.2009
Сообщений: 1,558
Завершенные тесты: 1
17.12.2016, 23:09 3
В обработчике события routedEventArgs.OriginalSource содержит информацию об инициаторе события.
Приведите его к типу MenuItem, это и будет элемент по которому выполнен клик.
1
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.12.2016, 23:09

Получить индекс элемента, по которому происходит клик
Здравствуйте. Подскажите как на js получать индекс элемента по которому происходит клик? В jquery...

Поле в Ворде - двойной щелчок мышью
здравствуйте, по имеющемуся полю в Ворде двойной щелчок мыши как сделать? Добавлено через 1 час...

Получить данные о сети: IP роутера к которому подключен телефон, MAC
Как получить данные о сети. а именно - IP роутера к которому подключен телефон, MAC и т.д.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.