Вывод конкретных изображений из директории

Рейтинг: 0Ответов: 0Опубликовано: 10.04.2023

Пишу программу для подбора аккордов для мандолины. Сделал систему подбора, как смог, дошёл до того, что вписанные аккорды корректно вычленяются из текста. Родилась другая проблема: нужно вывести конкретное изображение с названием аккорда и отразить его в окне. Искал решения: получалось только залить в список все изображения из директории аккордов, однако нужно выводить именно конкретный. Своим умом дошёл только до генерации пути к изображению, на том и повис.

Соответственно, нужно реализовать вывод конкретного изображения в ListView.

Директория с изображениями: \Resources\Chords\

Формат изображений: .png

Ниже прикладываю XAML и C# код.

XAML

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height=".15*"/>
            <RowDefinition Height="1*"/>
            <RowDefinition Height=".15*"/>
        </Grid.RowDefinitions>
        
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width=".8*"/>
            <ColumnDefinition Width=".4*"/>
        </Grid.ColumnDefinitions>

        <Grid Grid.Column="1"
              Grid.Row="1">
            <ListView ItemsSource="{Binding Images}" SelectionChanged="ListView_SelectionChanged">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Width="150" Header="Аккорды">
                            <GridViewColumn.CellTemplate>
                                <DataTemplate>
                                    <Image Source="{Binding Path}" MaxHeight="100" MaxWidth="65" Stretch="UniformToFill"/>
                                </DataTemplate>
                            </GridViewColumn.CellTemplate>
                        </GridViewColumn>
                    </GridView>
                </ListView.View>
            </ListView>
        </Grid>
        <Label Content="Аппликатуры аккордов:"
               FontSize="16"
               HorizontalAlignment="Left"
               VerticalAlignment="Center"
               FontWeight="Bold"
               Grid.Column="1"
               Margin="10 10 10 10"/>
        <TextBox Grid.Row="1"
                 Margin="10 10 10 10"
                 Name="textBox1" TextWrapping="Wrap" AcceptsReturn="True">
        </TextBox>
        <Label Content="Текст песни"
               FontSize="16"
               HorizontalAlignment="Left"
               VerticalAlignment="Center"
               FontWeight="Bold"
               Grid.Column="0"
               Margin="10 10 10 10">
        </Label>
        <Button Grid.Column="1"
                Grid.Row="3"
                Content="Показать аккорды"
                FontSize="16"
                Margin="10 10 10 10"
                FontWeight="Bold"
                HorizontalContentAlignment="Center"
                VerticalContentAlignment="Center"
                Name="chordsButton"
                Click="chordsButton_Click">
        </Button>
    </Grid>

C#

    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void chordsButton_Click(object sender, RoutedEventArgs e)
        {
            List<Image> list = new List<Image>();
            DirectoryInfo dir = new DirectoryInfo(@"\Resources\Chords\");
            var actual_chords = new List<string>();
            string text = textBox1.Text;
            string[] tex = text.Split(' ');
            string[] chords = { "A","A'","A7","A'7","Am","A'm","Am7","A'm7","B","B'","B'7","B'm","Bm7","B'm7","C","C7","Cm","Cm7","D","D7","Dm","Dm7","E","E'","E7","E'm","Em","Em7","E'm7","F","F7","Fm","Fm7","G","G7","Gm","Gm7"};
            foreach (string word in tex)
            {
                foreach (string chord in chords)
                {
                    if (word == chord)
                    {
                        foreach (FileInfo file in dir.EnumerateFiles("*.png"))
                        {
                            string fc = Convert.ToString(file);
                            string flc = fc.Substring(0, fc.Length - 4);
                            if (flc==chord)
                            {
                                string cp = @"\Resources\Chords\"+Convert.ToString(flc)+".png";
                                
                            }
                        }
                    }
                    
                }
            }
        }

Ответы

Ответов пока нет.