Я должен разработать a Label
управление в WPF, на.NET 3.5 и VisualStudio 2010, в который FontSize
автоматически заставит текст заполнить управляющее поле.
Я не знаю, должен ли я создать a CustomControl
наследование от Label
или если я должен создать a UserControl
который содержит a Label
управление.
Я видел пример здесь с помощью a ValueConverter
, но я не понимаю его поведения, здесь: измените размер шрифта динамично.
Кто-либо может дать мне ключ к разгадке это?
Обновление:
Я нашел решение с помощью DoubleConverter
от примера я отправил прежде:
Решение использует a ValueConverter
, который я извлек из примера, но добавил NumerFormat IFormatProvider для корректного парсинга "0.1" значение, я нашел это в Decimal d1 = Десятичное число. Синтаксический анализ ("0.1");//= 1?!?:
[ValueConversion(typeof(object), typeof(double))]
public class DoubleConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
double dblValue = (double)value;
double scale = Double.Parse(((string)parameter), System.Globalization.CultureInfo.InvariantCulture.NumberFormat);
return dblValue * scale;
}
public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
Затем необходимо инстанцировать в XAML DoubleConverter
, и укажите привязку в FonSize
Свойство:
Важный момент то, что значение для ConverterParameter
зависит абсолютно от присвоенного шрифта. Каждому шрифту, возможно, понадобится различное значение, и необходимо "играть вокруг", чтобы заставить правильное значение соответствовать точно.