2009-11-11 60 views
0

我有一个转换器,它根据DataGrid上的绑定值返回背景颜色。这在WPF中效果很好,但是当我把这段代码放入Silverlight时,它并不开心。WPF到Silverlight,绕过TargetType问题

在这里阅读一些帖子,似乎我不能使用TargetType="{x:Type my:DataGridCell}" 建议的答案是简单地使用TargetType="my:DataGridCell",但这再次没有奏效。

另一个建议是给样式一个Key,但是因为我的样式设置在我的DataGrid上,所以我无法将它移动到Page.Resources(因此给它一个键),因为我需要绑定到它。像这样:

<data:DataGrid x:Name="gridResults" CanUserReorderColumns="True" HorizontalAlignment="Left" IsReadOnly="True" AutoGenerateColumns="False" SelectionChanged="gridResults_SelectionChanged" ItemsSource="{Binding}"> 
     <data:DataGrid.CellStyle> 
      <Style TargetType="{x:Type data:DataGridCell}"> 
       <Setter Property="Background" Value="{Binding SoldIn, Converter={StaticResource conFor}}" /> 
      </Style> 
     </data:DataGrid.CellStyle> 
      <data:DataGrid.Columns> 
      <data:DataGridTextColumn 
        Header="Outlet" 
        Width="Auto" 
        Binding="{Binding Outlet}" /> 
    .... 
    .... 

我该如何保持我的约束力,并让silverlight变得快乐?

感谢, 钢钣

回答

0

不完美的解决方案,但我得到不过使用数据我想要的结果:DataGridTemplateColumns代替。

  <data:DataGridTemplateColumn Header="Outlet"> 
       <data:DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <Border Background="{Binding SoldIn, Converter={StaticResource conFor}}"> 
          <ContentControl Content="{Binding Outlet}" HorizontalContentAlignment="Stretch" VerticalContentAlignment="Stretch" /> 
         </Border> 
        </DataTemplate> 
       </data:DataGridTemplateColumn.CellTemplate> 
      </data:DataGridTemplateColumn>