123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- using System;
- using System.Collections.Generic;
- using System.Globalization;
- using System.Linq;
- using System.Text;
- using System.Windows;
- using System.Windows.Controls;
- using System.Windows.Data;
- using System.Windows.Media;
- using System.Windows.Shapes;
- using Brushes = System.Windows.Media.Brushes;
- namespace Aitex.Core.UI.Converters
- {
- class CenterBorderGapMaskConverter : IMultiValueConverter
- {
- // Methods
- public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
- {
- Type type = typeof(double);
- if (values == null
- || values.Length != 3
- || values[0] == null
- || values[1] == null
- || values[2] == null
- || !type.IsAssignableFrom(values[0].GetType())
- || !type.IsAssignableFrom(values[1].GetType())
- || !type.IsAssignableFrom(values[2].GetType()))
- {
- return DependencyProperty.UnsetValue;
- }
- double pixels = (double)values[0];
- double width = (double)values[1];
- double height = (double)values[2];
- if ((width == 0.0) || (height == 0.0))
- {
- return null;
- }
- Grid visual = new Grid();
- visual.Width = width;
- visual.Height = height;
- ColumnDefinition colDefinition1 = new ColumnDefinition();
- ColumnDefinition colDefinition2 = new ColumnDefinition();
- ColumnDefinition colDefinition3 = new ColumnDefinition();
- colDefinition1.Width = new GridLength(1.0, GridUnitType.Star);
- colDefinition2.Width = new GridLength(pixels);
- colDefinition3.Width = new GridLength(1.0, GridUnitType.Star);
- visual.ColumnDefinitions.Add(colDefinition1);
- visual.ColumnDefinitions.Add(colDefinition2);
- visual.ColumnDefinitions.Add(colDefinition3);
- RowDefinition rowDefinition1 = new RowDefinition();
- RowDefinition rowDefinition2 = new RowDefinition();
- rowDefinition1.Height = new GridLength(height / 2.0);
- rowDefinition2.Height = new GridLength(1.0, GridUnitType.Star);
- visual.RowDefinitions.Add(rowDefinition1);
- visual.RowDefinitions.Add(rowDefinition2);
- Rectangle rectangle1 = new Rectangle();
- Rectangle rectangle2 = new Rectangle();
- Rectangle rectangle3 = new Rectangle();
- rectangle1.Fill = Brushes.Black;
- rectangle2.Fill = Brushes.Black;
- rectangle3.Fill = Brushes.Black;
- Grid.SetRowSpan(rectangle1, 2);
- Grid.SetRow(rectangle1, 0);
- Grid.SetColumn(rectangle1, 0);
- Grid.SetRow(rectangle2, 1);
- Grid.SetColumn(rectangle2, 1);
- Grid.SetRowSpan(rectangle3, 2);
- Grid.SetRow(rectangle3, 0);
- Grid.SetColumn(rectangle3, 2);
- visual.Children.Add(rectangle1);
- visual.Children.Add(rectangle2);
- visual.Children.Add(rectangle3);
- return new VisualBrush(visual);
- }
- public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
- {
- return new object[] { Binding.DoNothing };
- }
- }
- }
|