summaryrefslogtreecommitdiffstats
path: root/win/CS/HandBrakeWPF/Helpers
diff options
context:
space:
mode:
authorsr55 <[email protected]>2011-10-30 21:53:10 +0000
committersr55 <[email protected]>2011-10-30 21:53:10 +0000
commit1fae5640fafcc3a4613eba99dcbb56f3e98430ae (patch)
treedca397ee63a4e9983899f639db50bad352dc3650 /win/CS/HandBrakeWPF/Helpers
parent8b8ebd1f417c6ef65ab431a36fad0bbf0e2daf58 (diff)
WinGui: (WPF) Further work on the new Options window. Just UI/Cosmetic code to finish now.
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4330 b64f7644-9d1e-0410-96f1-a4d463321fa5
Diffstat (limited to 'win/CS/HandBrakeWPF/Helpers')
-rw-r--r--win/CS/HandBrakeWPF/Helpers/ListBoxHelper.cs93
1 files changed, 93 insertions, 0 deletions
diff --git a/win/CS/HandBrakeWPF/Helpers/ListBoxHelper.cs b/win/CS/HandBrakeWPF/Helpers/ListBoxHelper.cs
new file mode 100644
index 000000000..ee24b3bbe
--- /dev/null
+++ b/win/CS/HandBrakeWPF/Helpers/ListBoxHelper.cs
@@ -0,0 +1,93 @@
+// --------------------------------------------------------------------------------------------------------------------
+// <copyright file="ListBoxHelper.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>
+// A Helper for the ListBox control to provide SelectedItems functionality.
+// </summary>
+// --------------------------------------------------------------------------------------------------------------------
+
+namespace HandBrakeWPF.Helpers
+{
+ using System.Collections;
+ using System.Windows;
+ using System.Windows.Controls;
+
+ /// <summary>
+ /// A Helper for the ListBox control to provide SelectedItems functionality.
+ /// </summary>
+ public class ListBoxHelper
+ {
+ /// <summary>
+ /// SelectedItems Attached Dependency Property
+ /// </summary>
+ public static readonly DependencyProperty SelectedItemsProperty =
+ DependencyProperty.RegisterAttached("SelectedItems", typeof(IList), typeof(ListBoxHelper), new FrameworkPropertyMetadata(null, OnSelectedItemsChanged));
+
+ /// <summary>
+ /// Gets the SelectedItems property. This dependency property
+ /// indicates ....
+ /// </summary>
+ /// <param name="item">
+ /// The item.
+ /// </param>
+ /// <returns>
+ /// The get selected items.
+ /// </returns>
+ public static IList GetSelectedItems(DependencyObject item)
+ {
+ return (IList)item.GetValue(SelectedItemsProperty);
+ }
+
+ /// <summary>
+ /// Sets the SelectedItems property. This dependency property
+ /// indicates ....
+ /// </summary>
+ /// <param name="item">
+ /// The item.
+ /// </param>
+ /// <param name="value">
+ /// The value.
+ /// </param>
+ public static void SetSelectedItems(DependencyObject item, IList value)
+ {
+ item.SetValue(SelectedItemsProperty, value);
+ }
+
+ /// <summary>
+ /// Handles changes to the SelectedItems property.
+ /// </summary>
+ /// <param name="item">
+ /// The item.
+ /// </param>
+ /// <param name="e">
+ /// The DependencyPropertyChangedEventArgs.
+ /// </param>
+ private static void OnSelectedItemsChanged(DependencyObject item, DependencyPropertyChangedEventArgs e)
+ {
+ ListBox listBox = item as ListBox;
+ if (listBox != null)
+ {
+ ResetSelectedItems(listBox);
+ listBox.SelectionChanged += delegate { ResetSelectedItems(listBox); };
+ }
+ }
+
+ /// <summary>
+ /// Reset Selected Items
+ /// </summary>
+ /// <param name="listBox">
+ /// The list box.
+ /// </param>
+ private static void ResetSelectedItems(ListBox listBox)
+ {
+ IList selectedItems = GetSelectedItems(listBox);
+ selectedItems.Clear();
+ if (listBox.SelectedItems != null)
+ {
+ foreach (var item in listBox.SelectedItems)
+ selectedItems.Add(item);
+ }
+ }
+ }
+}