2013-04-17 100 views
2

我有一段时间的数据绑定的问题,它改变了网格的颜色,并且它不起作用。 Iv'e在转换器中放置了一个断点并且应用程序击中了它,但仍保持网格的背景颜色不变,并且它保持不变,因为没有定义背景色...通过转换器的DataTemplate绑定网格背景

这是我的代码:

<ListView ItemsSource="{Binding ResultsUserControls}" 
      Background="{x:Null}" 
      BorderBrush="{x:Null}"> 
    <ListView.ItemTemplate> 
    <DataTemplate> 
     <Grid Width="200" 
      Height="70" 
      Background="{Binding CurrentResult,Converter={StaticResource crawlerTypeToResultColorConverter}}"> 
     <Label Content="{Binding .CurrentResult.SourceUrl}" /> 
     </Grid> 
    </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

和转换器:

public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Brushes.Red; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     return Binding.DoNothing; 
    } 
+0

在你的情况下,有没有必要使用数据绑定,您可以直接设置背景=“红”,何必呢? – David

+1

我想使用转换器内的条件,并返回红色只是为了检查转换器是否工作... –

+0

我建议使用[Snoop](http://snoopwpf.codeplex.com/)来查看颜色是否实际上正在改变你的想法。也许它被另一个元素隐藏了?输出窗口中是否有任何绑定错误?你可以进入'调试'菜单>'选项和设置...',然后查看'调试'>'输出窗口'并调整'WPF跟踪设置'下的输出级别,以获得更多关于绑定的信息。 –

回答

1

我想这应该是

public object Convert(object value, Type targetType, object parameter, 
         System.Globalization.CultureInfo culture) 
{ 
    return new SolidColorBrush(Colors.Red); 
} 

public object ConvertBack(object value, Type targetType, object parameter, 
          System.Globalization.CultureInfo culture) 
{ 
    return Binding.DoNothing; 
} 
+0

非常感谢你的作品非常漂亮! :) –

0

我修修补补与您的代码,你应该有什么工作。作为实验,从您的绑定中删除CurrentResult后台:

<Grid Width="200" Height="70" Background="{Binding Converter={StaticResource crawlerTypeToResultColorConverter}}"> 

我怀疑您现在会看到您的红色背景。我注意到,如果XAML解析器找不到要绑定的属性(因为拼写错误或者不存在),它将不会执行转换。我猜想XAML解析器无法在您的物品上找到CurrentResult。

+0

这是为什么?那么他具有什么样的财产? –