ControlTemplate に Xaml リソースを含めることはできますか?
-
05-07-2019 - |
質問
私は Silverlight テンプレート コントロールに取り組んでいます (つまり、これは Control から派生し、その外観は generic.xaml の ControlTemplate として実装されています)、バインディングの 1 つで ValueConverter の必要性に遭遇しました。通常、操作するコントロールのリソースに ValueConverter のインスタンスを作成するだけですが、ControlTemplate でそれを行う方法がわかりません。可能であれば、この実装をすべて Xaml で保持したいと考えていますが、OnApplyTemplate をオーバーライドし、コンバーターを使用してバインディングを手動で作成できると思います。
解決
これは 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>
<!-- ....
ただし、ValueConverter はコントロール テンプレートで誤用されることがよくあります。代わりに TypeConverter を使用することもできます。ブライアント・ライクス氏は、 このシナリオにおける ValueConverter と TypeConverter の違い.
所属していません StackOverflow