/// <summary> /// 変換開始ボタンをクリックしたときの処理を定義します。 /// </summary> private void ConvertButton_Click(object sender, RoutedEventArgs e) { var directory = SamePath.IsChecked == true ? null : OutputDirectory.Text; if (directory != null && !Directory.Exists(directory)) { BeginStoryboard(storyboard); return; } var codec = (CodecInfo)CodecList.SelectedItem; var removeSource = SamePath.IsChecked == true && RemoveSource.IsChecked == true; var trimming = IsTrimming.IsChecked == true; var trimmingType = LeftTop.IsChecked == true ? TrimType.LeftTop : TrimType.RightBottom; var line200 = Is200Line.IsChecked == true; var color8 = false;// Is8Color.IsChecked == true; Task.Factory.StartNew(() => { foreach (var sourceImage in sourceImages) { // 既にファイルが存在する場合の処理をどうするか後ほど決定 var result = sourceImage.Save(codec, directory, removeSource, trimming, trimmingType, line200, color8); var log = $"{sourceImage.Filename} => "; switch (result) { case SaveResult.Processed: log += $"{codec.Name}"; break; case SaveResult.Skipped: log += "skipped."; break; default: log += "undefined."; break; } Dispatcher.BeginInvoke(new Action(() => { LogView.Items.Add(log); LogView.ScrollIntoView(LogView.Items[LogView.Items.Count - 1]); })); } }); }
public EncodingWindow() { InitializeComponent(); Application.Current.Exit += CurrentExit; _logEntries.CollectionChanged += (sender, args) => { try { LogView.ScrollIntoView(_logEntries[_logEntries.Count - 1]); } catch (Exception ex) { Log.Error("Encoding Log error", ex); } }; }
protected void LogReceived(LogEventStruct log) { var empty = !LogEntries.Any(); Dispatcher.BeginInvoke(new Action(() => { LogEntries.Add(log); LogView.SelectedIndex = LogView.Items.Count - 1; LogView.ScrollIntoView(LogView.SelectedItem); ResizeColumns(); })); if (empty) { Dispatcher.BeginInvoke(DispatcherPriority.ApplicationIdle, new Action(ResizeColumns)); } }
private void ScrollToItem(object item) { LogView.ScrollIntoView(item); }