diff options
author | sr55 <[email protected]> | 2018-07-07 12:20:34 +0100 |
---|---|---|
committer | sr55 <[email protected]> | 2018-07-07 12:20:34 +0100 |
commit | fb1fe80d8cc9c65a1e3a030c0c61a81134c5efe2 (patch) | |
tree | 9d5b794fe33f84fd70930de1f3659819a4105095 /win | |
parent | 29e80bc54f423afefd45881e5e11a45bc002af6c (diff) |
WinGui: Tidyup around the Scan Objects. Complete some incomplete models. Introduce a factory for Title objects.
Diffstat (limited to 'win')
11 files changed, 289 insertions, 140 deletions
diff --git a/win/CS/HandBrake.Interop/Interop/Json/Encode/Metadata.cs b/win/CS/HandBrake.Interop/Interop/Json/Encode/Metadata.cs index adf82c09c..b399880a5 100644 --- a/win/CS/HandBrake.Interop/Interop/Json/Encode/Metadata.cs +++ b/win/CS/HandBrake.Interop/Interop/Json/Encode/Metadata.cs @@ -20,6 +20,11 @@ namespace HandBrake.Interop.Interop.Json.Encode public string AlbumArtist { get; set; } /// <summary> + /// Gets or sets the album. + /// </summary> + public string Album { get; set; } + + /// <summary> /// Gets or sets the artist. /// </summary> public string Artist { get; set; } diff --git a/win/CS/HandBrake.Interop/Interop/Json/Scan/SourceMetadata.cs b/win/CS/HandBrake.Interop/Interop/Json/Scan/SourceMetadata.cs index 240635cc6..e41cd1689 100644 --- a/win/CS/HandBrake.Interop/Interop/Json/Scan/SourceMetadata.cs +++ b/win/CS/HandBrake.Interop/Interop/Json/Scan/SourceMetadata.cs @@ -14,5 +14,15 @@ namespace HandBrake.Interop.Interop.Json.Scan /// </summary> public class SourceMetadata { + public string Name { get; set; } + public string Artist { get; set; } + public string Composer { get; set; } + public string Comment { get; set; } + public string Genre { get; set; } + public string Album { get; set; } + public string AlbumArtist { get; set; } + public string Description { get; set; } + public string LongDescription { get; set; } + public string ReleaseDate { get; set; } } }
\ No newline at end of file diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj index 3fe2ab917..83969f7a0 100644 --- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj +++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj @@ -238,10 +238,12 @@ <Compile Include="Services\Queue\Model\QueueTask.cs" />
<Compile Include="Services\Scan\EventArgs\ScanCompletedEventArgs.cs" />
<Compile Include="Services\Scan\EventArgs\ScanProgressEventArgs.cs" />
+ <Compile Include="Services\Scan\Factories\TitleFactory.cs" />
<Compile Include="Services\Scan\Interfaces\IScan.cs" />
<Compile Include="Services\Scan\LibScan.cs" />
<Compile Include="Services\Scan\Model\Audio.cs" />
<Compile Include="Services\Scan\Model\Chapter.cs" />
+ <Compile Include="Services\Scan\Model\Metadata.cs" />
<Compile Include="Services\Scan\Model\Source.cs" />
<Compile Include="Services\Scan\Model\Subtitle.cs" />
<Compile Include="Services\Scan\Model\Title.cs" />
diff --git a/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs b/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs index 8396a584f..3e133c5fa 100644 --- a/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs +++ b/win/CS/HandBrakeWPF/Services/Encode/Factories/EncodeFactory.cs @@ -611,6 +611,7 @@ namespace HandBrakeWPF.Services.Encode.Factories if (job.MetaData != null) { metaData.Artist = job.MetaData.Artist; + metaData.Album = job.MetaData.Album; metaData.AlbumArtist = job.MetaData.AlbumArtist; metaData.Comment = job.MetaData.Comment; metaData.Composer = job.MetaData.Composer; diff --git a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs index e86212a39..02dc02ffb 100644 --- a/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs +++ b/win/CS/HandBrakeWPF/Services/Encode/Model/Models/MetaData.cs @@ -9,13 +9,13 @@ namespace HandBrakeWPF.Services.Encode.Model.Models { + using HandBrakeWPF.Services.Scan.Model; + /// <summary> /// The meta data. /// </summary> public class MetaData { - private string albumArtist; - /// <summary> /// Initializes a new instance of the <see cref="MetaData"/> class. /// </summary> @@ -34,6 +34,7 @@ namespace HandBrakeWPF.Services.Encode.Model.Models if (metadata != null) { this.AlbumArtist = metadata.AlbumArtist; + this.Album = metadata.Album; this.Artist = metadata.Artist; this.Comment = metadata.Comment; this.Composer = metadata.Composer; @@ -45,22 +46,34 @@ namespace HandBrakeWPF.Services.Encode.Model.Models } } - /// <summary> - /// Gets or sets the album artist. - /// </summary> - public string AlbumArtist + public MetaData(Metadata metadata) { - get - { - return this.albumArtist; - } - set + if (metadata != null) { - this.albumArtist = value; + this.AlbumArtist = metadata.AlbumArtist; + this.Album = metadata.Album; + this.Artist = metadata.Artist; + this.Comment = metadata.Comment; + this.Composer = metadata.Composer; + this.Description = metadata.Description; + this.Genre = metadata.Genre; + this.LongDescription = metadata.LongDescription; + this.Name = metadata.Name; + this.ReleaseDate = metadata.ReleaseDate; } } /// <summary> + /// Gets or sets the album artist. + /// </summary> + public string AlbumArtist { get; set; } + + /// <summary> + /// Gets or sets the album. + /// </summary> + public string Album { get; set; } + + /// <summary> /// Gets or sets the artist. /// </summary> public string Artist { get; set; } diff --git a/win/CS/HandBrakeWPF/Services/Scan/Factories/TitleFactory.cs b/win/CS/HandBrakeWPF/Services/Scan/Factories/TitleFactory.cs new file mode 100644 index 000000000..b985c40d8 --- /dev/null +++ b/win/CS/HandBrakeWPF/Services/Scan/Factories/TitleFactory.cs @@ -0,0 +1,122 @@ +// -------------------------------------------------------------------------------------------------------------------- +// <copyright file="TitleFactory.cs" company=""> +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// </copyright> +// <summary> +// Defines the TitleFactory type. +// </summary> +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrakeWPF.Services.Scan.Factories +{ + using System; + + using HandBrake.Interop.Interop.HbLib; + using HandBrake.Interop.Interop.Json.Scan; + using HandBrake.Interop.Interop.Model; + + using HandBrakeWPF.Services.Encode.Model.Models; + using HandBrakeWPF.Services.Scan.Model; + + public class TitleFactory + { + public Title CreateTitle(SourceTitle title, int mainFeature) + { + Title converted = new Title + { + TitleNumber = title.Index, + Duration = new TimeSpan(0, title.Duration.Hours, title.Duration.Minutes, title.Duration.Seconds), + Resolution = new Size(title.Geometry.Width, title.Geometry.Height), + AngleCount = title.AngleCount, + ParVal = new Size(title.Geometry.PAR.Num, title.Geometry.PAR.Den), + AutoCropDimensions = new Cropping + { + Top = title.Crop[0], + Bottom = title.Crop[1], + Left = title.Crop[2], + Right = title.Crop[3] + }, + Fps = ((double)title.FrameRate.Num) / title.FrameRate.Den, + SourceName = title.Path, + MainTitle = mainFeature == title.Index, + Playlist = title.Type == 1 ? string.Format(" {0:d5}.MPLS", title.Playlist).Trim() : null, + FramerateNumerator = title.FrameRate.Num, + FramerateDenominator = title.FrameRate.Den, + Type = title.Type + }; + + int currentTrack = 1; + foreach (SourceChapter chapter in title.ChapterList) + { + string chapterName = !string.IsNullOrEmpty(chapter.Name) ? chapter.Name : string.Empty; + converted.Chapters.Add(new Chapter(currentTrack, chapterName, new TimeSpan(chapter.Duration.Hours, chapter.Duration.Minutes, chapter.Duration.Seconds))); + currentTrack++; + } + + int currentAudioTrack = 1; + foreach (SourceAudioTrack track in title.AudioList) + { + converted.AudioTracks.Add(new Audio(currentAudioTrack, track.Language, track.LanguageCode, track.Description, track.Codec, track.SampleRate, track.BitRate, track.ChannelLayout)); + currentAudioTrack++; + } + + int currentSubtitleTrack = 1; + foreach (SourceSubtitleTrack track in title.SubtitleList) + { + SubtitleType convertedType = new SubtitleType(); + + switch (track.Source) + { + case 0: + convertedType = SubtitleType.VobSub; + break; + case 4: + convertedType = SubtitleType.UTF8Sub; + break; + case 5: + convertedType = SubtitleType.TX3G; + break; + case 6: + convertedType = SubtitleType.SSA; + break; + case 1: + convertedType = SubtitleType.SRT; + break; + case 2: + convertedType = SubtitleType.CC; + break; + case 3: + convertedType = SubtitleType.CC; + break; + case 7: + convertedType = SubtitleType.PGS; + break; + } + + bool canBurn = HBFunctions.hb_subtitle_can_burn(track.Source) > 0; + bool canSetForcedOnly = HBFunctions.hb_subtitle_can_force(track.Source) > 0; + + converted.Subtitles.Add(new Subtitle(track.Source, currentSubtitleTrack, track.Language, track.LanguageCode, convertedType, canBurn, canSetForcedOnly)); + currentSubtitleTrack++; + } + + SourceMetadata metadata = title.MetaData; + if (title.MetaData != null) + { + converted.Metadata = new Metadata( + metadata.AlbumArtist, + metadata.Album, + metadata.Artist, + metadata.Comment, + metadata.Composer, + metadata.Description, + metadata.Genre, + metadata.LongDescription, + metadata.Name, + metadata.ReleaseDate); + } + + return converted; + } + } +} diff --git a/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs b/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs index d17a5d3c9..598758073 100644 --- a/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs +++ b/win/CS/HandBrakeWPF/Services/Scan/LibScan.cs @@ -26,6 +26,7 @@ namespace HandBrakeWPF.Services.Scan using HandBrakeWPF.Services.Encode.Model; using HandBrakeWPF.Services.Encode.Model.Models; using HandBrakeWPF.Services.Scan.EventArgs; + using HandBrakeWPF.Services.Scan.Factories; using HandBrakeWPF.Services.Scan.Interfaces; using HandBrakeWPF.Services.Scan.Model; using HandBrakeWPF.Utilities; @@ -47,6 +48,7 @@ namespace HandBrakeWPF.Services.Scan #region Private Variables private readonly ILog log = LogService.GetLogger(); + private TitleFactory titleFactory = new TitleFactory(); private string currentSourceScanPath; private IHandBrakeInstance instance; private Action<bool, Source> postScanOperation; @@ -365,89 +367,12 @@ namespace HandBrakeWPF.Services.Scan /// <returns> /// The convert titles. /// </returns> - private static List<Title> ConvertTitles(JsonScanObject titles) + private List<Title> ConvertTitles(JsonScanObject titles) { List<Title> titleList = new List<Title>(); foreach (SourceTitle title in titles.TitleList) { - Title converted = new Title - { - TitleNumber = title.Index, - Duration = new TimeSpan(0, title.Duration.Hours, title.Duration.Minutes, title.Duration.Seconds), - Resolution = new Size(title.Geometry.Width, title.Geometry.Height), - AngleCount = title.AngleCount, - ParVal = new Size(title.Geometry.PAR.Num, title.Geometry.PAR.Den), - AutoCropDimensions = new Cropping - { - Top = title.Crop[0], - Bottom = title.Crop[1], - Left = title.Crop[2], - Right = title.Crop[3] - }, - Fps = ((double)title.FrameRate.Num) / title.FrameRate.Den, - SourceName = title.Path, - MainTitle = titles.MainFeature == title.Index, - Playlist = title.Type == 1 ? string.Format(" {0:d5}.MPLS", title.Playlist).Trim() : null, - FramerateNumerator = title.FrameRate.Num, - FramerateDenominator = title.FrameRate.Den, - Type = title.Type - }; - - int currentTrack = 1; - foreach (SourceChapter chapter in title.ChapterList) - { - string chapterName = !string.IsNullOrEmpty(chapter.Name) ? chapter.Name : string.Empty; - converted.Chapters.Add(new Chapter(currentTrack, chapterName, new TimeSpan(chapter.Duration.Hours, chapter.Duration.Minutes, chapter.Duration.Seconds))); - currentTrack++; - } - - int currentAudioTrack = 1; - foreach (SourceAudioTrack track in title.AudioList) - { - converted.AudioTracks.Add(new Audio(currentAudioTrack, track.Language, track.LanguageCode, track.Description, track.Codec, track.SampleRate, track.BitRate, track.ChannelLayout)); - currentAudioTrack++; - } - - int currentSubtitleTrack = 1; - foreach (SourceSubtitleTrack track in title.SubtitleList) - { - SubtitleType convertedType = new SubtitleType(); - - switch (track.Source) - { - case 0: - convertedType = SubtitleType.VobSub; - break; - case 4: - convertedType = SubtitleType.UTF8Sub; - break; - case 5: - convertedType = SubtitleType.TX3G; - break; - case 6: - convertedType = SubtitleType.SSA; - break; - case 1: - convertedType = SubtitleType.SRT; - break; - case 2: - convertedType = SubtitleType.CC; - break; - case 3: - convertedType = SubtitleType.CC; - break; - case 7: - convertedType = SubtitleType.PGS; - break; - } - - bool canBurn = HBFunctions.hb_subtitle_can_burn(track.Source) > 0; - bool canSetForcedOnly = HBFunctions.hb_subtitle_can_force(track.Source) > 0; - - converted.Subtitles.Add(new Subtitle(track.Source, currentSubtitleTrack, track.Language, track.LanguageCode, convertedType, canBurn, canSetForcedOnly)); - currentSubtitleTrack++; - } - + Title converted = this.titleFactory.CreateTitle(title, titles.MainFeature); titleList.Add(converted); } diff --git a/win/CS/HandBrakeWPF/Services/Scan/Model/Metadata.cs b/win/CS/HandBrakeWPF/Services/Scan/Model/Metadata.cs new file mode 100644 index 000000000..36d955870 --- /dev/null +++ b/win/CS/HandBrakeWPF/Services/Scan/Model/Metadata.cs @@ -0,0 +1,86 @@ +// -------------------------------------------------------------------------------------------------------------------- +// <copyright file="MetaData.cs" company="HandBrake Project (http://handbrake.fr)"> +// This file is part of the HandBrake source code - It may be used under the terms of the GNU General Public License. +// </copyright> +// <summary> +// An MetaData Class +// </summary> +// -------------------------------------------------------------------------------------------------------------------- + +namespace HandBrakeWPF.Services.Scan.Model +{ + /// <summary> + /// The meta data. + /// </summary> + public class Metadata + { + public Metadata() + { + } + + public Metadata(string albumArtist, string album, string artist, string comment, string composer, string description, string genre, string longDescription, string name, string releaseDate) + { + this.AlbumArtist = albumArtist; + this.Album = album; + this.Artist = artist; + this.Comment = comment; + this.Composer = composer; + this.Description = description; + this.Genre = genre; + this.LongDescription = longDescription; + this.Name = name; + this.ReleaseDate = releaseDate; + } + + /// <summary> + /// Gets the album artist. + /// </summary> + public string AlbumArtist { get; } + + + /// <summary> + /// Gets the album. + /// </summary> + public string Album { get; } + + /// <summary> + /// Gets the artist. + /// </summary> + public string Artist { get; } + + /// <summary> + /// Gets the comment. + /// </summary> + public string Comment { get; } + + /// <summary> + /// Gets the composer. + /// </summary> + public string Composer { get; } + + /// <summary> + /// Gets the description. + /// </summary> + public string Description { get; } + + /// <summary> + /// Gets the genre. + /// </summary> + public string Genre { get; } + + /// <summary> + /// Gets the long description. + /// </summary> + public string LongDescription { get; } + + /// <summary> + /// Gets the name. + /// </summary> + public string Name { get; } + + /// <summary> + /// Gets the release date. + /// </summary> + public string ReleaseDate { get; } + } +} diff --git a/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs b/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs index 144a1ed26..2fd980eeb 100644 --- a/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs +++ b/win/CS/HandBrakeWPF/Services/Scan/Model/Title.cs @@ -16,9 +16,6 @@ namespace HandBrakeWPF.Services.Scan.Model using HandBrake.Interop.Interop.Model; - using HandBrakeWPF.Model; - using HandBrakeWPF.Utilities; - /// <summary> /// An object that represents a single Title of a DVD /// </summary> @@ -32,6 +29,7 @@ namespace HandBrakeWPF.Services.Scan.Model this.AudioTracks = new List<Audio>(); this.Chapters = new List<Chapter>(); this.Subtitles = new List<Subtitle>(); + this.Metadata = new Metadata(); } #region Properties @@ -51,6 +49,8 @@ namespace HandBrakeWPF.Services.Scan.Model /// </summary> public List<Subtitle> Subtitles { get; set; } + public Metadata Metadata { get; set; } + /// <summary> /// Gets or sets The track number of this Title /// </summary> diff --git a/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs index ec4fa6d78..e6f3b17fc 100644 --- a/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/MetaDataViewModel.cs @@ -27,7 +27,6 @@ namespace HandBrakeWPF.ViewModels public class MetaDataViewModel : ViewModelBase, IMetaDataViewModel { private EncodeTask task; - private MetaData metaData; /// <summary> /// Initializes a new instance of the <see cref="MetaDataViewModel"/> class. @@ -40,45 +39,24 @@ namespace HandBrakeWPF.ViewModels /// </param> public MetaDataViewModel(IWindowManager windowManager, IUserSettingService userSettingService) { - this.Task = new EncodeTask(); + this.task = new EncodeTask(); } public event EventHandler<TabStatusEventArgs> TabStatusChanged; /// <summary> - /// The Current Job - /// </summary> - public EncodeTask Task - { - get - { - return this.task; - } - set - { - this.task = value; - - if (this.task != null) - { - this.MetaData = this.task.MetaData; - } - - this.NotifyOfPropertyChange(() => this.Task); - } - } - - /// <summary> /// Gets or sets the meta data. /// </summary> public MetaData MetaData { get { - return this.metaData; + return this.task.MetaData; } + set { - this.metaData = value; + this.task.MetaData = value; this.NotifyOfPropertyChange(() => this.MetaData); } } @@ -100,7 +78,10 @@ namespace HandBrakeWPF.ViewModels /// </param> public void SetSource(Source source, Title selectedTitle, Preset currentPreset, EncodeTask encodeTask) { - this.Task = encodeTask; + return; // Disabled for now. + this.task = encodeTask; + this.task.MetaData = new MetaData(selectedTitle.Metadata); + this.NotifyOfPropertyChange(() => this.MetaData); } /// <summary> @@ -114,7 +95,6 @@ namespace HandBrakeWPF.ViewModels /// </param> public void SetPreset(Preset preset, EncodeTask encodeTask) { - this.Task = encodeTask; } /// <summary> @@ -125,7 +105,8 @@ namespace HandBrakeWPF.ViewModels /// </param> public void UpdateTask(EncodeTask encodeTask) { - this.Task = encodeTask; + this.task = encodeTask; + this.NotifyOfPropertyChange(() => this.MetaData); } public bool MatchesPreset(Preset preset) diff --git a/win/CS/HandBrakeWPF/Views/MetaDataView.xaml b/win/CS/HandBrakeWPF/Views/MetaDataView.xaml index 975305f82..34c328529 100644 --- a/win/CS/HandBrakeWPF/Views/MetaDataView.xaml +++ b/win/CS/HandBrakeWPF/Views/MetaDataView.xaml @@ -36,6 +36,7 @@ <RowDefinition Height="Auto" MinHeight="25" /> <RowDefinition Height="Auto" MinHeight="25" /> <RowDefinition Height="Auto" MinHeight="25" /> + <RowDefinition Height="Auto" MinHeight="25" /> </Grid.RowDefinitions> <Grid.ColumnDefinitions> @@ -45,30 +46,33 @@ <TextBlock Text="Album Artist:" Grid.Row="0" /> <TextBox Grid.Row="0" Grid.Column="1" Text="{Binding MetaData.AlbumArtist, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - - <TextBlock Text="Artist:" Grid.Row="1" Grid.Column="0" /> - <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding MetaData.Artist, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + + <TextBlock Text="Album:" Grid.Row="1" Grid.Column="0" /> + <TextBox Grid.Row="1" Grid.Column="1" Text="{Binding MetaData.Album, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + + <TextBlock Text="Artist:" Grid.Row="2" Grid.Column="0" /> + <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding MetaData.Artist, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - <TextBlock Text="Comment:" Grid.Row="2" Grid.Column="0" /> - <TextBox Grid.Row="2" Grid.Column="1" Text="{Binding MetaData.Comment, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + <TextBlock Text="Comment:" Grid.Row="3" Grid.Column="0" /> + <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding MetaData.Comment, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - <TextBlock Text="Composer:" Grid.Row="3" Grid.Column="0" /> - <TextBox Grid.Row="3" Grid.Column="1" Text="{Binding MetaData.Composer, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + <TextBlock Text="Composer:" Grid.Row="4" Grid.Column="0" /> + <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding MetaData.Composer, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - <TextBlock Text="Description:" Grid.Row="4" Grid.Column="0" /> - <TextBox Grid.Row="4" Grid.Column="1" Text="{Binding MetaData.Description, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + <TextBlock Text="Description:" Grid.Row="5" Grid.Column="0" /> + <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding MetaData.Description, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - <TextBlock Text="Genre:" Grid.Row="5" Grid.Column="0" /> - <TextBox Grid.Row="5" Grid.Column="1" Text="{Binding MetaData.Genre, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + <TextBlock Text="Genre:" Grid.Row="6" Grid.Column="0" /> + <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding MetaData.Genre, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - <TextBlock Text="Long Description:" Grid.Row="6" Grid.Column="0" /> - <TextBox Grid.Row="6" Grid.Column="1" Text="{Binding MetaData.LongDescription, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + <TextBlock Text="Long Description:" Grid.Row="7" Grid.Column="0" /> + <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding MetaData.LongDescription, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - <TextBlock Text="Name:" Grid.Row="7" Grid.Column="0" /> - <TextBox Grid.Row="7" Grid.Column="1" Text="{Binding MetaData.Name, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + <TextBlock Text="Name:" Grid.Row="8" Grid.Column="0" /> + <TextBox Grid.Row="8" Grid.Column="1" Text="{Binding MetaData.Name, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> - <TextBlock Text="Release Date:" Grid.Row="8" Grid.Column="0" /> - <TextBox Grid.Row="8" Grid.Column="1" Text="{Binding MetaData.ReleaseDate, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> + <TextBlock Text="Release Date:" Grid.Row="9" Grid.Column="0" /> + <TextBox Grid.Row="9" Grid.Column="1" Text="{Binding MetaData.ReleaseDate, UpdateSourceTrigger=PropertyChanged}" Width="350" VerticalAlignment="Center" /> </Grid> </Grid> |