2

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

这是我的代码:

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

2 回答 2

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;
}
于 2013-04-17T17:20:45.227 回答
0

我已经修改了你的代码,你所拥有的应该可以工作。作为一个实验,从背景绑定中删除 CurrentResult:

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

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

于 2013-04-17T16:45:51.293 回答