数据模板通过转换器绑定网格背景

本文关键字:绑定 网格 背景 转换器 数据 | 更新日期: 2023-09-27 18:09:46

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

下面是我的代码:
<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;
    }

数据模板通过转换器绑定网格背景

我认为这应该是

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

我已经修改了你的代码,你的代码应该可以工作了。作为实验,从Background:

的绑定中删除currenresult
<Grid Width="200" Height="70" Background="{Binding Converter={StaticResource crawlerTypeToResultColorConverter}}">

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