Frage

Eine Templat-Kontrolle Ich arbeite an verwendet einen Valueconverter etwa so:

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

Dies ist der Standard-Look, die ich in generic.xaml liefern. Als ich dieses Steuerelement verwenden werde ich mag andere Format-Strings in den Konverter gelangt. Gibt es eine Möglichkeit, dass ohne die Bereitstellung der vollen Control geschieht?

Mein erster Gedanke war, dass ich Converter mit einem Template auf eine Eigenschaft auf dem Steuerelement verwenden könnte, aber ich entdeckte, dass ConverterParameters kann nicht gebunden werden. Eine weitere Option könnte sein, um den Zugriff auf die Steuerung von der ConvertTo Methode zu erhalten, pflückt dann diese Eigenschaft. Ich bin mir nicht sicher, wie das zu tun. Optionen, die die Notwendigkeit beseitigen würden komplett neu Vorlage, um die Kontrolle jedes Mal, wenn ich es verwenden, wäre hilfreich, (es ist eine Menge von XAML).

War es hilfreich?

Lösung

In diesen Situationen ich in der Regel tun, eines von zwei Dingen:

1) Binden an ein Objekt, das sowohl Zugriff auf die Eigenschaft hat Sie auf die Format-String binden möchten. Im dem Konverter haben Sie dann Zugriff sowohl auf das Grundstück und das Format-String.

2) Fügen Sie Eigenschaften, um Ihre Daten Objekt / Viewmodel / etc für den Format-String und den formatierten Text. Dann binden an die formatierten Texteigenschaften. Unter der Annahme, dass Sie INotifyPropertyChanged verwenden, bedenken Sie, dass Sie benötigen, um das Property Ereignis für die formatierten Text Eigenschaft feuern, wenn Sie den Text oder Format-String-Eigenschaften ändern

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top