¡Año nuevo, aventuras nuevas! Selector de FontFamilies con fuentes ordenaditas

 

Te felicito, oh Suppa JMN, ¡qué grande eres!

Bueno, menos pegotes y más código. Aquí tienes un XAML que chilla profesionalidad:

<Style TargetType="{x:Type controls:FontFamilyPicker}">
  <Setter Property="Template">
    <Setter.Value>
      <ControlTemplate TargetType="{x:Type controls:FontFamilyPicker}">
        <Grid>
          <Grid.Resources>
            <CollectionViewSource
                x:Key="Cvs"
                Source="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=FontFamilies}">
              <CollectionViewSource.SortDescriptions>
                <componentModel:SortDescription PropertyName="Source" />
              </CollectionViewSource.SortDescriptions>
            </CollectionViewSource>
          </Grid.Resources>
          <Border Background="{TemplateBinding Background}"
                  BorderBrush="{TemplateBinding BorderBrush}"
                  BorderThickness="{TemplateBinding BorderThickness}">
            <ComboBox
                SelectedItem="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedFontFamily, Mode=TwoWay}"
                ItemsSource="{Binding Source={StaticResource Cvs}}">
            </ComboBox>
          </Border>
        </Grid>
      </ControlTemplate>
    </Setter.Value>
  </Setter>

¿Has adivinado de qué va la cosa? Pues si no, yo te lo digo. Tienes una lista de familias de fuentes que están más desordenadas que mi cajón de los calzoncillos. Ahora llega el momento en que tus usuarios, que siempre ponen pegas, te dicen: “Ouh evil! necesito que esto esté ordenado!” pero como tú no eres un cutre decides que vas a solucionar la vicisitud con tu maestría y un toque de Loewe. imagePuesto que tú lo que tienes bajo palos es una colección (ICollection<FontFamily>) y eso sería como hablar de un conjunto en Álgebra, donde no procede establecer orden, tú se sacas una CollectionViewSource en la plantilla del control (ControlTemplate) y se la metes a caponete. Código fino, fino. No has tocado nada por debajo y ya tienes la colección ordenada con tus SortDescriptions al gusto.

Ahora ya puedes ducharte con agua fría.

FRESSSH!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s