Bläddra i källkod

复合控件 - 通用下拉框数据集合

chenrongqian 2 år sedan
förälder
incheckning
d431a0e05d

+ 8 - 10
PDF Office/CustomControl/CompositeControl/SlidComboControl.xaml

@@ -16,6 +16,11 @@
                 <ResourceDictionary Source="../../Styles/CustomBtnStyle.xaml"/>
             </ResourceDictionary.MergedDictionaries>
 
+            <DataTemplate x:Key="numberData">
+                <Grid>
+                    <TextBlock Text="{Binding Content}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
+                </Grid>
+            </DataTemplate>
         </ResourceDictionary>
     </UserControl.Resources>
     <Grid>
@@ -42,21 +47,14 @@
             <Border Grid.Column="1" BorderBrush="#E2E3E6"  Width="80" Height="32" Margin="0,0,11,0"  BorderThickness="0">
                 <Grid>
                     <ComboBox Name="ThicknessBox" BorderThickness="1" Padding="10" Background="Transparent" BorderBrush="#FFE2E3E6" 
-                                  MaxDropDownHeight="200">
+                                  MaxDropDownHeight="200"
+                            ItemTemplate="{StaticResource numberData}"
+                              >
                         <ComboBox.ItemContainerStyle>
                             <Style TargetType="{x:Type ComboBoxItem}">
                                 <Setter Property="Padding" Value="10 0 0 0"/>
                             </Style>
                         </ComboBox.ItemContainerStyle>
-                        <ComboBoxItem Content="1" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="3" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="6" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="9" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="12" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="15" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="18" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="21" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
-                        <ComboBoxItem Content="24" Height="32" VerticalContentAlignment="Center" Template="{StaticResource comboxitem}"/>
                     </ComboBox>
                     <TextBox Name="ThicknessText" Background="White" FontFamily="Segoe UI" FontSize="14"  Height="20" Margin="10,0,35,0" IsReadOnly="True"
                              BorderThickness="0" VerticalAlignment="Center" TextAlignment="Left" >

+ 49 - 15
PDF Office/CustomControl/CompositeControl/SlidComboControl.xaml.cs

@@ -15,15 +15,56 @@ using System.Windows.Shapes;
 
 namespace PDF_Office.CustomControl.CompositeControl
 {
+    public class ComboNumberItem
+    {
+        public double Value { get; set; }
+        public string Content { get; set; }
+        public string Unit { get; set; }
+        public ComboNumberItem(double value,string unitStr = "")
+        {
+            Content = value + unitStr;
+        }
+    }
     /// <summary>
     /// SlidComboControl.xaml 的交互逻辑
     /// </summary>
     public partial class SlidComboControl : UserControl
     {
+        public List<ComboNumberItem> Items { get;private set; }    
         public event EventHandler<double> ValueChanged;
         public SlidComboControl()
         {
             InitializeComponent();
+            Items = new List<ComboNumberItem>();
+            DefaultItems();
+        }
+
+        public void SetItemSource(List<ComboNumberItem> items)
+        {
+            Items = items;
+            ThicknessBox.ItemsSource = Items;
+        }
+
+        private void DefaultItems()
+        {
+            var item = new ComboNumberItem(3);
+            Items.Add(item);
+            item = new ComboNumberItem(6);
+            Items.Add(item);
+            item = new ComboNumberItem(9);
+            Items.Add(item);
+            item = new ComboNumberItem(12);
+            Items.Add(item);
+            item = new ComboNumberItem(15);
+            Items.Add(item);
+            item = new ComboNumberItem(18);
+            Items.Add(item);
+            item = new ComboNumberItem(21);
+            Items.Add(item);
+            item = new ComboNumberItem(24);
+            Items.Add(item);
+
+            ThicknessBox.ItemsSource = Items;
         }
 
         private void UserControl_Loaded(object sender, RoutedEventArgs e)
@@ -38,11 +79,11 @@ namespace PDF_Office.CustomControl.CompositeControl
         {
             foreach(var item in ThicknessBox.Items)
             {
-                var itemData = item as ComboBoxItem;
+
+                var itemData = item as ComboNumberItem;
                 if(itemData != null)
                 {
-                   var doubleItem = double.Parse(itemData.Content.ToString());
-                    if(doubleItem == Value)
+                    if(itemData.Value == Value)
                     {
                         ThicknessBox.SelectedItem = itemData;
                         break;
@@ -54,20 +95,13 @@ namespace PDF_Office.CustomControl.CompositeControl
 
         private void ThicknessBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
         {
-            var listItem = ThicknessBox.ItemContainerGenerator.ContainerFromItem(ThicknessBox.SelectedItem) as ComboBoxItem;
-            if (listItem != null)
+            var item = ThicknessBox.SelectedItem as ComboNumberItem;
+            if(item != null)
             {
-                Value = double.Parse(listItem.Content.ToString());
-                ThicknessText.Text = listItem.Content.ToString();
+                Value = item.Value;
+                ThicknessText.Text = item.Content;
             }
-            else
-            {
-                ThicknessText.Text = "1";
-                Value = 1.0;
-            }
-                
-
-            
+           
 
         }