Как изменить FontFamily, когда пользователь выбирает конкретный элемент в ComboBox (WPF) - PullRequest
0 голосов
/ 30 мая 2019

enter image description here

<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

Ответы [ 2 ]

1 голос
/ 31 мая 2019

Назначьте событие 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;
    }
}
0 голосов
/ 31 мая 2019

Вы можете установить свойство FallbackValue привязки:

<TextBlock Text="Text in selected font" FontFamily="{Binding ElementName=theComboBox, 
                                 Path=SelectedItem, FallbackValue={StaticResource Great}}" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...