Ich kenne diesen Beitrag: TextBox FontFamily Binding, ähnelt meiner Frage, aber mein Fall ist viel einfacher, möchte ich das FontFamily-Attribut eines TextBox-Steuerelements an eine ComboBox binden, wenn Der Wert der ComboBox wird geändert, der Inhalt der TextBox ändert sich entsprechend. Ich bin mit VM oder Abhängigkeitseigenschaft nicht, folgte ich dieses Tutorial: https://dotnetstories.wordpress.com/2011/07/31/using-type-converters-in-wpf/WPF - Binding FontFamily von TextBox zu einer ComboBox
Und kam mit:
<Window x:Class="NumericControlTest.MainWindow"
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"
xmlns:local="clr-namespace:NumericControlTest"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<local:FontFamilyConversions x:Key="FontFamilyConversions" />
</Window.Resources>
<DockPanel>
<ComboBox DockPanel.Dock="Top" x:Name="Fonttype" >
<ComboBoxItem IsSelected="True">Arial</ComboBoxItem>
<ComboBoxItem>Batang</ComboBoxItem>
<ComboBoxItem>BatangChe</ComboBoxItem>
<ComboBoxItem>Gungsuh</ComboBoxItem>
<ComboBoxItem>GungsuhChe</ComboBoxItem>
<ComboBoxItem>Courier New</ComboBoxItem>
</ComboBox>
<TextBox x:Name="editor" FontSize="16" FontFamily="{Binding Path=SelectedValue, ElementName=Fonttype, Mode=OneWay, Converter={StaticResource FontFamilyConversions}}" >
</TextBox>
</DockPanel>
using System.Windows.Data;
using System.Windows.Media;
namespace NumericControlTest
{
class FontFamilyConversions : IValueConverter
{
public object Convert(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
FontFamily fontfamily = new FontFamily("Verdana");
if (value != null)
{
fontfamily = new FontFamily(value.ToString());
}
return fontfamily;
}
public object ConvertBack(object value, System.Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return null;
}
}
}
Aber es funktioniert nicht, nachdem ich die ComboBox ändern Wert, passiert nichts.
Danke für Ihre Zeit.
Wirklich interessant, bevor ich die Frage gestellt, ich den Ausdruck value.ToString() tatsächlich versucht, Ausgang, und ich wusste, es war „System.Windows. Media.FontFamily: Arial ", aber ich habe auch einen Wendepunkt bei der Rückkehr in die Schriftfamilie hinzugefügt, genau wie du gesagt hast, und ich fand, dass es wie erwartet korrekt war. Nun, das ist irgendwie komisch. Das Wichtigste ist, dass dein Vorschlag funktioniert, vielen Dank. – VincentZHANG
@VincentZHANG erweitert die Antwort ein bisschen – bdimag
Das ist ein großartiger Job, vielen Dank. Hinzufügen von als unmittelbare Kinder ist jedoch jenseits meiner Fähigkeit zu verstehen. Also, das heißt wird als gültiges Tag in XAML erkannt, oder? Wenn XAML kompiliert wird, wird ein FontFamily-Objekt konvertiert? Auf der anderen Seite, kann ich jede Klasse zu hinzufügen?wie AliceBlue und binden Sie dann diese ComboBox an das Vordergrundattribut einer TextBox. –
VincentZHANG