質問

私は 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 の違い.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top