Pergunta

A templated controlar Eu estou trabalhando em usa um ValueConverter assim:

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

Esta é a aparência padrão que eu fornecer em generic.xaml. Quando eu uso este controle vou querer passar cadeias de formato diferente para o conversor. Existe uma maneira de fazer isso acontecer sem fornecer o ControlTemplate completo?

Meu primeiro pensamento foi que eu poderia usar ConverterParameter com um TemplateBinding a uma propriedade no controle, mas descobri que ConverterParameters não pode ser vinculado. Outra opção poderia ser para obter acesso ao controle a partir do método ConvertTo, em seguida, apanhar essa propriedade. Eu não sei como fazer isso. Qualquer opção que eliminariam a necessidade de re-modelo completamente o controle cada vez que eu usá-lo seria útil (é um monte de XAML).

Foi útil?

Solução

Nestas situações, eu geralmente fazer uma de duas coisas:

1) Vincular a um objeto que tem acesso a ambos o imóvel que você deseja vincular a seqüência de formato. No conversor então você vai ter acesso a ambos a propriedade e a cadeia de formato.

2) Adicione propriedades ao seu objeto de dados / viewmodel / etc para a cadeia de formato e texto formatado. Em seguida, ligar para as propriedades de texto formatado. Supondo que você está usando INotifyPropertyChanged, tenha em mente que você precisará acionar o evento PropertyChanged para a propriedade texto formatado sempre que mudar as propriedades do texto ou da corda do formato

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top