Сначала позвольте мне сказать, что я новичок в Silverlight. Но у меня есть большинство «базовых» вещей Silverlight. Сейчас я использую Silverlight 3.
В двух словах, я не вижу своего IValueConverter, вызываемого внутри UserControl. Но, как и во многих вещах, все не так просто. UserControl находится в ячейке DataGrid, в столбце, чей DataColumnTemplate создается во время выполнения XAML.
Вот мой шаблон данных для столбца:
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 так, как я хочу.
Резолютивные части 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 ...
Спасибо