私はSilverlightテンプレートコントロールに取り組んでおり(つまり、Controlから派生し、generic.xamlでControlTemplateとして実装されているように見えます)、バインディングの1つでValueConverterの必要性に遭遇しました。通常は、操作するコントロールのリソースにValueConverterのインスタンスを作成するだけですが、ControlTemplateを使用してそれを行う方法がわかりません。可能であれば、この実装をすべてXamlに保持したいのですが、OnApplyTemplateをオーバーライドして、コンバーターを使用してバインディングを手動で作成できると思います。
1 に答える
3
これは Silverlight 3 で機能します。コントロール テンプレート内にリソース セクションを追加し、テンプレートのリソースに ValueConverter を追加するだけです。
<ControlTemplate TargetType="controls:MyControl">
<Grid Margin="8,40,8,20" x:Name="peopleListContainer">
<Grid.Resources>
<controls:MyValueConverter x:Key="converter" />
</Grid.Resources>
<!-- ....
ただし、ValueConverters はコントロール テンプレートで誤用されることがよくあります。代わりに TypeConverter を使用することもできます。Bryant Likes は、このシナリオでの ValueConverter と TypeConverter の違いについて論じた優れた記事を書きました。
于 2009-09-09T15:36:19.940 に答える