سؤال

أحاول تعيين القيمة المحددة لـ Font Family Combobox ، والتي تم ملؤها مع XAML التالي:

<ComboBox ItemsSource="{x:Static Fonts.SystemFontFamilies}" Name="cboFont">
    <ComboBox.ItemsPanel>
        <ItemsPanelTemplate>
            <VirtualizingStackPanel MinWidth="256" />
        </ItemsPanelTemplate>
    </ComboBox.ItemsPanel>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Margin="2" Text="{Binding}" FontFamily="{Binding}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

الحقل الذي يجب أن أقوم بتعيين combobox عليه هو سلسلة ، ولكن هذا يسبب formatexceptions. هل يمكن لأي شخص أن يخبرني بسرعة ما الفئة التي يتوقعها Combobox وأيضًا كيفية تحويل سلسلة على سبيل المثال "Arial" إلى هذا التنسيق؟

هل كانت مفيدة؟

المحلول

آمل أن أكون قد فهمت سؤالك بشكل صحيح.

يدعم Fontfamily المنشئ

FontFamily(String familyName);

لذلك يجب أن تكون قادرًا على استخدام شيء مثل new FontFamily("Arial") لتحويل من سلسلة إلى fontfamily.

يمكنك وضع ذلك في الفصل الذي ينفذ IValueConverter الذي يتحول بين Fontfamily و String.

للانتقال من Fontfamily إلى String ، يمكنك الوصول إلى خاصية FamilyNames للحصول على اسم للخط المخصص لثقافة معينة.

ثم فقط قم بتعيين ملزمة لعائلة fontfamily لاستخدام المحول.

نصائح أخرى

تبدو إجابة أليكس جيدة جدًا.

يمكنك أيضًا تجربة DependencyProperty:

   public FontFamily FontFamily
        {
            get { return (FontFamily)GetValue(FontFamilyProperty); }
            set { SetValue(FontFamilyProperty, value); }
        }

 public static DependencyProperty FontFamilyProperty =
            DependencyProperty.Register(
            "FontFamily",
            typeof(FontFamily),
            typeof(YourClassVM),
             new FrameworkPropertyMetadata(SystemFonts.MessageFontFamily
        , FrameworkPropertyMetadataOptions.AffectsRender |
        FrameworkPropertyMetadataOptions.AffectsMeasure)
            );

ثم يمكنك ببساطة ربط العنصر المحدد من الخاص بك صندوق التحرير و ال النص و fontfamily من الخاص بك كتلة النص إلى "fontfamily".

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top