2013-04-17 94 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

這是爲什麼?那麼他具有什麼樣的財產? –