using Prism.Commands; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes; namespace PDF_Office.CustomControl.CompositeControl { /// /// SlidComboControl.xaml 的交互逻辑 /// public partial class SlidComboControl : UserControl { public List Items { get;private set; } public event RoutedEventHandler ValueChanged; public SlidComboControl() { InitializeComponent(); Items = new List(); DefaultItems(); } public void SetItemSource(List items) { Items = items; ThicknessBox.ItemsSource = Items; } private void DefaultItems() { var item = new ComboDataItem(3); Items.Add(item); item = new ComboDataItem(6); Items.Add(item); item = new ComboDataItem(9); Items.Add(item); item = new ComboDataItem(12); Items.Add(item); item = new ComboDataItem(15); Items.Add(item); item = new ComboDataItem(18); Items.Add(item); item = new ComboDataItem(21); Items.Add(item); item = new ComboDataItem(24); Items.Add(item); ThicknessBox.ItemsSource = Items; } private void UserControl_Loaded(object sender, RoutedEventArgs e) { ThicknessBox.SelectionChanged -= ThicknessBox_SelectionChanged; ThicknessBox.SelectionChanged += ThicknessBox_SelectionChanged; ThicknessSlider.ValueChanged += ThicknessSlider_ValueChanged; ThicknessBox.SelectedIndex = 0; } private void ThicknessSlider_ValueChanged(object sender, RoutedPropertyChangedEventArgs e) { foreach(var item in ThicknessBox.Items) { var itemData = item as ComboDataItem; if(itemData != null) { if(itemData.Value == Value) { ThicknessBox.SelectedItem = itemData; break; } } } ThicknessText.Text = Value.ToString(); } private void ThicknessBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { var item = ThicknessBox.SelectedItem as ComboDataItem; if(item != null) { Value = item.Value; ThicknessText.Text = item.Content; ValueChanged?.Invoke(Value, e); } } public double Value { get { return (double)GetValue(ValueProperty); } set { SetValue(ValueProperty, value); } } public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(double), typeof(SlidComboControl), new PropertyMetadata(1.0, SelectedValuePropertyChanged)); private static void SelectedValuePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { var control = d as SlidComboControl; var value = (double)e.NewValue; if (control != null) { control.ValueChanged?.Invoke(value, null); } } } }