Проблемы с Silverlight 3 IValueConverter - PullRequest
0 голосов
/ 26 января 2011

Сначала позвольте мне сказать, что я новичок в 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 ...

Спасибо

1 Ответ

0 голосов
/ 27 января 2011

Наконец-то понял это.Переместив объявление ресурса в <UserControl.Resources> и поместив этот тег перед содержимым, мои IValueConverters были выполнены.

...