Я добавил несколько пользовательских шрифтов в проект Silverlight. Однако их поведение очень спорадично. Я использую это в пользовательском контроле. Когда я впервые добавляю элемент управления, он отображается нормально. Когда я перестраиваю, шрифт возвращается к значению по умолчанию. Когда я просматриваю приложение в браузере, оно также использует шрифт по умолчанию. Шрифт встроен как ресурс.
![Silverlight issue](https://i.stack.imgur.com/U3t6M.png)
Вверху сразу после добавления элемента управления в конструктор, в нижней части - приложение в браузере Я понятия не имею, что вызывает это. Если вам нужен код для контроля, я могу предоставить его.
BorderedTextBlock.xaml
<UserControl x:Class="MindWorX.CustomPropertyReproduction.Controls.BorderedTextBlock"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" Height="100" Width="200">
<Grid x:Name="LayoutRoot">
<Border BorderThickness="1" BorderBrush="Lime">
<TextBlock Name="MainTextBlock" Margin="4" TextWrapping="Wrap" />
</Border>
</Grid>
</UserControl>
BorderedTextBlock.xaml.cs
using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
namespace MindWorX.CustomPropertyReproduction.Controls
{
public partial class BorderedTextBlock : UserControl
{
public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(String), typeof(BorderedTextBlock), new PropertyMetadata("TextBlock", new PropertyChangedCallback(OnTextChanged)));
private static void OnTextChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
BorderedTextBlock sender = (d as BorderedTextBlock);
sender.MainTextBlock.Text = (String)e.NewValue;
}
new public static readonly DependencyProperty FontFamilyProperty = DependencyProperty.Register("FontFamily", typeof(FontFamily), typeof(BorderedTextBlock), new PropertyMetadata(new FontFamily("Portable User Interface"), new PropertyChangedCallback(OnFontFamilyChanged)));
private static void OnFontFamilyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
BorderedTextBlock sender = (d as BorderedTextBlock);
sender.MainTextBlock.FontFamily = (FontFamily)e.NewValue;
}
new public static readonly DependencyProperty FontSizeProperty = DependencyProperty.Register("FontSize", typeof(Double), typeof(BorderedTextBlock), new PropertyMetadata(11d, new PropertyChangedCallback(OnFontSizeChanged)));
private static void OnFontSizeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
BorderedTextBlock sender = (d as BorderedTextBlock);
sender.MainTextBlock.FontSize = (Double)e.NewValue;
}
public BorderedTextBlock()
{
InitializeComponent();
}
public String Text
{
get { return (String)GetValue(TextProperty); }
set { SetValue(TextProperty, value); }
}
new public FontFamily FontFamily
{
get { return (FontFamily)GetValue(FontFamilyProperty); }
set { SetValue(FontFamilyProperty, value); }
}
new public Double FontSize
{
get { return (Double)GetValue(FontSizeProperty); }
set { SetValue(FontSizeProperty, value); }
}
}
}