using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
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 Compdfkit_Tools.Common
{
///
/// CPDFFontUI.xaml 的交互逻辑
///
public partial class CPDFFontUI : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public event EventHandler FontFamilyChanged;
public event EventHandler FontStyleChanged;
public event EventHandler FontSizeChanged;
public event EventHandler FontAlignChanged;
public string FontFamilyValue
{
get => FontFamilyComboBox.SelectedItem.ToString();
set
{
if (value == "Courier New")
{
FontFamilyComboBox.SelectedIndex = 0;
}
else if (value == "Arial")
{
FontFamilyComboBox.SelectedIndex = 1;
}
else
{
FontFamilyComboBox.SelectedIndex = 2;
}
}
}
private bool _isBold;
public bool IsBold
{
get => _isBold;
set
{
_isBold = value;
if (_isBold && IsItalic)
{
FontStyleComboBox.SelectedIndex = 3;
}
else if (_isBold && !IsItalic)
{
FontStyleComboBox.SelectedIndex = 1;
}
else if (!_isBold && IsItalic)
{
FontStyleComboBox.SelectedIndex = 2;
}
else
{
FontStyleComboBox.SelectedIndex = 0;
}
}
}
private bool _isItalic;
public bool IsItalic
{
get => _isItalic;
set
{
_isItalic = value;
if (IsBold && _isItalic)
{
FontStyleComboBox.SelectedIndex = 3;
}
else if (IsBold && !_isItalic)
{
FontStyleComboBox.SelectedIndex = 1;
}
else if (!IsBold && _isItalic)
{
FontStyleComboBox.SelectedIndex = 2;
}
else
{
FontStyleComboBox.SelectedIndex = 0;
}
}
}
private TextAlignment _textAlignment;
public TextAlignment TextAlignment
{
get
{
if ((bool)LeftAlignRadioButton.IsChecked)
{
return TextAlignment.Left;
}
else if ((bool)CenterAlignRadioButton.IsChecked)
{
return TextAlignment.Center;
}
else
{
return TextAlignment.Right;
}
}
set
{
if (TextAlignment.Left == value)
{
LeftAlignRadioButton.IsChecked = true;
}
else if (TextAlignment.Center == value)
{
CenterAlignRadioButton.IsChecked = true;
}
else
{
RightAlignRadioButton.IsChecked = true;
}
}
}
private int _fontSizeValue = 20;
public int FontSizeValue
{
get => _fontSizeValue;
set
{
_fontSizeValue = value;
OnPropertyChanged(nameof(FontSizeValue));
FontSizeChanged?.Invoke(this, EventArgs.Empty);
}
}
public CPDFFontUI()
{
InitializeComponent();
InitComboBox();
this.DataContext = this;
}
public void InitComboBox()
{
List fontNameList = new List()
{
{"Courier" },
{"Helvetica" },
{"Times" }
};
FontFamilyComboBox.ItemsSource = fontNameList;
FontFamilyComboBox.SelectedIndex = 1;
List fontStyleList = new List()
{
{"Common" },
{"Bold" },
{"Italic" },
{"Bold and Italic" }
};
FontStyleComboBox.ItemsSource = fontStyleList;
FontStyleComboBox.SelectedIndex = 0;
List fontSizeList = new List()
{
{6},
{8},
{9},
{10},
{12},
{14},
{18},
{20},
{24},
{26},
{28},
{32},
{30},
{32},
{48},
{72}
};
FontSizeComboBox.InitPresetNumberArray(fontSizeList);
}
protected void OnPropertyChanged(string propertyName)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private void FontFamilyComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
FontFamilyTextBox.Text = (sender as ComboBox).SelectedItem.ToString();
FontFamilyChanged?.Invoke(this, EventArgs.Empty);
}
private void FontStyleComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
FontStyleTextBox.Text = (sender as ComboBox).SelectedItem.ToString();
if (FontStyleTextBox.Text == "Common")
{
IsBold = false;
IsItalic = false;
}
else if (FontStyleTextBox.Text == "Italic")
{
IsBold = false;
IsItalic = true;
}
else if (FontStyleTextBox.Text == "Bold")
{
IsBold = true;
IsItalic = false;
}
else
{
IsBold = true;
IsItalic = true;
}
FontStyleChanged?.Invoke(this, EventArgs.Empty);
}
private void AlignRadioButton_Checked(object sender, RoutedEventArgs e)
{
FontAlignChanged?.Invoke(this, EventArgs.Empty);
}
}
}