Вывод конкретных изображений из директории
Пишу программу для подбора аккордов для мандолины. Сделал систему подбора, как смог, дошёл до того, что вписанные аккорды корректно вычленяются из текста. Родилась другая проблема: нужно вывести конкретное изображение с названием аккорда и отразить его в окне. Искал решения: получалось только залить в список все изображения из директории аккордов, однако нужно выводить именно конкретный. Своим умом дошёл только до генерации пути к изображению, на том и повис.
Соответственно, нужно реализовать вывод конкретного изображения в 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";
}
}
}
}
}
}
Источник: Stack Overflow на русском