<ComboBox x:Name = "theComboBox">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content = "Use Default Font"/>
<CollectionContainer Collection = "{Binding Source = {x:Static onts.SystemFontFamilies}}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
<TextBlock Text = "Text in selected font" FontFamily = "{Binding ElementName=theComboBox, Path=SelectedItem}" />
Я привязал семейство шрифтов текстового блока к выбранному шрифту в поле со списком. Это работает правильно. Но я хочу, чтобы когда пользователь щелкнул "использовать шрифт по умолчанию", семейство шрифтов текстового блока изменилось на это:
FontFamily = {StaticResource Great} //Great.ttf is an embedded font in my project
@Sach Я обновил вопрос. Когда пользователь выбирает «использовать шрифт по умолчанию», семейство шрифтов текстового блока должно измениться на определенный шрифт. здесь great.ttf, который является моим шрифтом по умолчанию.
Назначьте событие SelectionChanged поля со списком для вызова метода, в котором вы проверяете, является ли выбранный элемент тем, который вам нужен (yourItem), вы устанавливаете FontFamily текстового блока на тот, который вы хотите (YourFont).
<ComboBox x:Name = "theComboBox" SelectionChanged = "ComboBox_SelectionChanged">
<ComboBox.ItemsSource>
<CompositeCollection>
<ComboBoxItem Content = "Use Default Font"/>
<CollectionContainer Collection = "{Binding Source = {x:Static onts.SystemFontFamilies}}"/>
</CompositeCollection>
</ComboBox.ItemsSource>
</ComboBox>
<TextBlock x:Name = "myTextblock" Text = "Text in selected font" FontFamily = "{Binding ElementName=theComboBox, Path=SelectedItem}" />
А также,
private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (theComboBox.SelectedItem = yourItem)
{
myTextBlock.FontFamily = YourFont;
}
}
Вы можете установить свойство FallbackValue
привязки:
<TextBlock Text = "Text in selected font" FontFamily = "{Binding ElementName=theComboBox,
Path=SelectedItem, FallbackValue = {StaticResource Great}}" />
@kokabi: Вы пробовали использовать установленное семейство шрифтов, например FallbackValue='Arial'
? Работает просто отлично для меня.
Ваш вопрос не ясен. Что именно вы хотите, чтобы произошло, когда пользователь выбирает
use default font
, и в чем проблема с этим кодом?