Domanda

Un controllo basato su modelli a cui sto lavorando utilizza un ValueConverter in questo modo:

<ListBox>
   <ListBox.Resources>
      <Controls:CodeDescriptionValueConverter x:Key="CodeDescriptionValueConverter"/>
   </ListBox.Resources>
   <ListBox.ItemTemplate>
      <DataTemplate>
         <TextBlock Text="{Binding Converter={StaticResource CodeDescriptionValueConverter}"/>
      </DataTemplate>
   </ListBox.ItemTemplate>
</ListBox>

Questo è l'aspetto predefinito che fornisco in generic.xaml. Quando uso questo controllo, voglio passare stringhe di formato diverso nel convertitore. C'è un modo per farlo accadere senza fornire il ControlTemplate completo?

Il mio primo pensiero è stato che avrei potuto usare ConverterParameter con un TemplateBinding a una proprietà sul controllo, ma ho scoperto che ConverterParameters non può essere associato. Un'altra opzione potrebbe essere quella di ottenere l'accesso al controllo dal metodo ConvertTo, quindi selezionare quella proprietà. Non sono sicuro di come farlo. Qualsiasi opzione che eliminerebbe la necessità di riprogrammare completamente il controllo ogni volta che lo uso sarebbe utile (è un sacco di Xaml).

È stato utile?

Soluzione

In queste situazioni, generalmente faccio una delle due cose:

1) Associa a un oggetto che ha accesso sia alla proprietà che desideri associare alla stringa di formato. Nel convertitore avrai quindi accesso sia alla proprietà che alla stringa di formato.

2) Aggiungi proprietà al tuo oggetto dati / viewmodel / etc per la stringa di formato e il testo formattato. Quindi associa alle proprietà del testo formattato. Supponendo che tu stia utilizzando INotifyPropertyChanged, tieni presente che dovrai attivare l'evento modificato dalla proprietà per la proprietà del testo formattato ogni volta che cambi il testo o le proprietà della stringa di formato

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top