Вам нужно будет добавить шрифт в текстовое поле с кодом. Метод wpf.LoadComponent() загружает файл .xaml с диска и создает окно WPF, но не будет искать во встроенных ресурсах что-либо, включая шрифты. Самый простой способ, насколько я знаю, это загрузить шрифт с диска.
Сначала измените действие сборки для вашего шрифта, чтобы Копировать в выходной каталог было Всегда. В вашем примере шрифт будет скопирован в папку bin\Debug\Fonts\.
Теперь вам нужно будет дать вашему текстовому полю имя, чтобы вы могли получить к нему доступ с помощью кода. В файле MainWindow.xaml добавьте атрибут x:Name в текстовое поле. Здесь я назвал его textbox.
<Grid>
<TextBox x:Name="textbox" Text="ABC"/>
</Grid>
Теперь в вашем классе MainWindow вы можете добавить свойство для своего текстового поля и в конструкторе написать некоторый код для загрузки шрифта с диска и применения его к вашему текстовому полю. Полный код показан ниже.
import wpf
from System import Uri
from System.IO import Path
from System.Windows import Window
from System.Windows.Media import FontFamily
class MainWindow(Window):
def __init__(self):
wpf.LoadComponent(self, 'MainWindow.xaml')
self.addFont()
def addFont(self):
fontDirectory = Path.GetFullPath(".\\Fonts\\")
uri = Uri(fontDirectory)
fontFamily = FontFamily(uri, "./#Foo")
self.textbox.FontFamily = fontFamily
def get_textbox(self):
return self._textbox
def set_textbox(self, value):
self._textbox = value
textbox = property(get_textbox, set_textbox)
Метод addFont() просто создает Uri, указывающий на каталог, в котором находится ваш шрифт, затем создает новое семейство FontFamily, используя имя семейства шрифтов, и, наконец, обновляет свойство TextBox FontFamily.
person
Matt Ward
schedule
11.11.2012