まず、私はSilverlightが初めてだと言いましょう。しかし、私は "基本的な" Silverlightのものの大部分を理解しています。私は現時点でSilverlight 3を使用しています。Silverlight 3 IValueConverterの問題
一言で言えば、私は自分のIValueConverterがUserControlの中で呼び出されるのを見ていません。しかし、多くのことと同様、それほど単純ではありません。 UserControlはDataGridセルにあり、XAMLによって実行時にDataColumnTemplateが生成される列にあります。ここで
は列のための私のDataTemplateです:
StringBuilder CellTemp = new StringBuilder();
CellTemp.Append("<DataTemplate ");
CellTemp.Append("xmlns:aa='clr-namespace:InvTech.AA.Silverlight.UI;assembly=AASilverlight' ");
CellTemp.Append("xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation' ");
CellTemp.Append("xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml' ");
CellTemp.Append(">");
CellTemp.AppendFormat("<aa:ProductAssetView DataContext='{{Binding Products[{0}]}}' />", index);
CellTemp.Append("</DataTemplate>");
return CellTemp.ToString();
だから、セルの内容は、私のユーザーコントロールにバインドされてきています。これはうまくいく。私はちょうど私の望むようにUserControlの内容をフォーマットするために呼び出されたIValueConverterを取得できません。
UserControlのXAMLの手術部品:
(接頭辞を宣言)
xmlns:aaConv="clr-namespace:InvTech.AA.Silverlight.Core;assembly=AA.Core"
(グリッドレイアウト内のバインドされたコントロール)
<TextBox x:Name="txtSAA" Grid.Row="0" Grid.Column="0" Text="{Binding SAA, Converter={StaticResource PercentConverter}, Mode=TwoWay}" Width="35" FontSize="9"/>
<TextBox x:Name="txtOVR" Grid.Row="0" Grid.Column="1" Text="{Binding Overlay, Converter={StaticResource PercentConverter}, Mode=TwoWay}" Width="35" FontSize="9" />
<TextBox x:Name="txtTAA" Grid.Row="0" Grid.Column="2" Text="{Binding TAA, Converter={StaticResource PercentConverter}, Mode=TwoWay}" Width="35" FontSize="9" />
<TextBlock x:Name="tbkCurrent" Grid.Row="0" Grid.Column="3" Text="TODO" Width="35" FontSize="9" />
<Grid.Resources>
<aaConv:PercentValueConverter x:Key="PercentConverter" />
</Grid.Resources>
は明らかに間違って何かがここにありますか?動的XAMLは要素ですか?私は、これは、動的XAMLテンプレートに比べて些細でなければなりませんように...感じる最後にこれを考え出した
おかげ