XMAL:
<Image
Margin="0,0,5,0"
Grid.Column="0"
Grid.Row="0"
Name="image"
Stretch="UniformToFill"
DataContext ="{Binding SelectedPhoto, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type dns:MainWindow}}}"
Source="{Binding ImageFrame}" HorizontalAlignment="Center" VerticalAlignment="Center">
</Image>
<ScrollBar Height="20" Name="scbImages" Orientation="Horizontal" Grid.Column="0"
Grid.Row="1" Maximum="0" SmallChange="1" ValueChanged="scbImages_ValueChanged" />
<GroupBox Name="info" Grid.Column="1" Grid.Row="0" Grid.RowSpan="2">
<GroupBox.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Label Content="Name: "/>
<Label DataContext="{Binding Path=DataContext, ElementName=image}" Content="{Binding Name}"></Label>
</StackPanel>
</DataTemplate>
</GroupBox.HeaderTemplate>
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled">
<StackPanel DataContext="{Binding Path=Metadata, ElementName=image}">
<Label>Size:</Label>
<Label Content="{Binding}"></Label>
<Label >Date Image Taken:</Label>
<Label Content="{Binding DateImageTaken}" />
<Label >Camera Model:</Label>
<Label Content="{Binding CameraModel}"/>
<Label >Creation Software:</Label>
<Label Content="{Binding CreationSoftware}" />
<Label >Lens Aperture:</Label>
<Label Content="{Binding LensAperture}" />
<Label >Focal Length:</Label>
<Label Content="{Binding FocalLength}" />
<Label >ISO Speed:</Label>
<Label Content="{Binding IsoSpeed}" />
<Label >Exposure Time:</Label>
<Label Content="{Binding ExposureTime}" />
<Label >Exposure Mode:</Label>
<Label Content="{Binding ExposureMode}" />
<Label >Exposure Compensation:</Label>
<Label Content="{Binding ExposureCompensation}" />
<Label >White Balance Mode:</Label>
<Label Content="{Binding WhiteBalanceMode}" />
<Label >Color Representation:</Label>
<Label Content="{Binding ColorRepresentation}" />
</StackPanel>
</ScrollViewer>
</GroupBox>
</Grid>
</Grid>
Cs:
с использованием System;using System.Collections.Generic;using System.Collections.ObjectModel;использование System.Linq;используя System.Text;используя System.Windows;использование System.Windows.Controls;используя System.Windows.Data;использование System.Windows.Documents;использование System.Windows.Input;используя System.Windows.Media;using System.Windows.Media.Imaging;использование System.Windows.Navigation;using System.Windows.Shapes;
пространство имен WpfApplication2 {/// /// Логика взаимодействия для MainWindow.xaml /// открытый частичный класс MainWindow: Window {приватная строка photosDir = @ "D: \ Users \ Rafael\ Gaby \ Fotos \ 5 x 7 ";private ObservableCollection photos = new ObservableCollection ();
public static DependencyProperty SelectedPhotoIndexProperty = DependencyProperty.Register("SelectedPhotoIndex", typeof(double), typeof(MainWindow));
public static DependencyProperty SelectedPhotoProperty = DependencyProperty.Register("SelectedPhoto", typeof(Photo), typeof(MainWindow));
public MainWindow()
{
InitializeComponent();
foreach(var curImg in System.IO.Directory.GetFiles(this.photosDir))
photos.Add(new Photo(curImg));
if(photos.Count > 0)
{
this.scbImages.Maximum = photos.Count - 1;
this.SelectedPhotoIndex = 0;
}
}
public double SelectedPhotoIndex
{
get
{ return this.GetValue(SelectedPhotoIndexProperty) != null ? (double)this.GetValue(SelectedPhotoIndexProperty) : 0; }
set
{
this.SetValue(SelectedPhotoIndexProperty, value);
this.SelectedPhoto = photos[(int)value];
}
}
public Photo SelectedPhoto
{
get { return this.GetValue(SelectedPhotoProperty)as Photo; }
set
{
this.SetValue(SelectedPhotoProperty, value);
}
}
private void scbImages_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)
{
this.SelectedPhotoIndex = (int)e.NewValue;
}
}
public class Photo
{
public Photo(string path)
{
Name = path;
ImageFrame = BitmapFrame.Create(new Uri(path));
}
public string Name
{ get; set; }
public BitmapFrame ImageFrame {
get;
set;
}
}
}