DataTemplate通过转换器绑定网格背景

时间:2013-04-17 15:33:33

标签: c# wpf xaml data-binding converter

我有一段时间的问题,数据绑定会改变网格的颜色,不知何故它不起作用。 我在转换器中设置了一个断点并且应用程序命中了它,但是网格的背景颜色仍然不会改变,并且因为没有定义背景颜色而保持...

这是我的代码:

<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;
    }

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

我修改了你的代码,你所拥有的应该是有用的。作为实验,从背景的绑定中删除CurrentResult:

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

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