0

私が取り組んでいるテンプレート化されたコントロールは、次のようなValueConverterを使用します。

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

これは、generic.xamlで提供するデフォルトの外観です。このコントロールを使用するときは、さまざまな形式の文字列をコンバーターに渡したいと思います。完全なControlTemplateを提供せずにそれを実現する方法はありますか?

私が最初に考えたのは、コントロールのプロパティにTemplateBindingを指定してConverterParameterを使用できるということでしたが、ConverterParametersをバインドできないことがわかりました。別のオプションは、ConvertToメソッドからコントロールにアクセスし、そのプロパティをピックオフすることです。どうすればいいのかわかりません。使用するたびにコントロールを完全に再テンプレート化する必要をなくすオプションは役に立ちます(Xamlがたくさんあります)。

4

1 に答える 1

1

このような状況では、私は通常、次の2つのいずれかを実行します。

1)フォーマット文字列にバインドする両方のプロパティにアクセスできるオブジェクトにバインドします。コンバーターでは、プロパティとフォーマット文字列の両方にアクセスできます。

2)フォーマット文字列とフォーマットされたテキストのプロパティをデータオブジェクト/ビューモデルなどに追加します。次に、フォーマットされたテキストプロパティにバインドします。INotifyPropertyChangedを使用していると仮定すると、テキストまたはフォーマット文字列のプロパティを変更するたびに、フォーマットされたテキストプロパティのpropertychangedイベントを発生させる必要があることに注意してください。

于 2009-09-09T19:57:01.630 に答える