2013-01-04 28 views
3

好吧,因爲我是新來的WPF我可能會問一個簡單的問題,但我已經搜索了最近5個小時的解決方案,什麼也沒找到。
我有一個類組成一個布爾值,指示ListView行是否應該着色。
我綁定了其餘列的值,但由於沒有列的顏色我卡住試圖弄清楚如何做到這一點。着色列表視圖中的一個項目

我試過Style s,試過DataTemplate s(花了我一些時間才明白把它們放在哪裏,但我想通了)以及一些C#代碼中的函數的選項,我不知道如何調用。

我知道我可能沒有提供足夠的信息或任何代碼,但讓我知道你需要幫助我什麼,我會發布它,我很抱歉,但我又是新的所以我甚至不知道你需要什麼。

這是我的工作類:

 public class ReportRow 
{ 
    public string ProductID { get; set; } 
    public int SideA { get; set; } 
    public int SideB { get; set; } 
    public string Workers { get; set; } 

    public bool Equality { get; set; } 
} 

一切都顯示在從應該指出,如果該行應該是有色的或不是布爾的ListView分開。

UPDATE

這是我使用的ListView

  <ListView Height="118" HorizontalAlignment="Right" Name="ReportView" VerticalAlignment="Top" Width="390" HorizontalContentAlignment="Right" Grid.Row="1" ItemsSource="{Binding ReportRows}" > 
     <ListView.View> 
      <GridView> 
       <GridView.Columns> 
        <GridViewColumn Header="Product" Width="60" DisplayMemberBinding="{Binding ProductID}" /> 
        <GridViewColumn Header="SideA" Width="60" DisplayMemberBinding="{Binding SideA}"/> 
        <GridViewColumn Header="SideB" Width="60" DisplayMemberBinding="{Binding SideB}"/> 
        <GridViewColumn Header="Workers" DisplayMemberBinding="{Binding Workers}"/> 
       </GridView.Columns> 
      </GridView> 
     </ListView.View> 
    </ListView> 

這是我現在有。

+1

請出示你使用 – Blachshma

+1

的XAML http://stackoverflow.com/questions/8077949/different-color-for-different- items-in-listview?rq = 1 – linguini

+0

我怎樣才能看到它與我的班級合作,而不是與該例子中的水果班級合作? –

回答

1

可以色彩搭配ItemContainerStyle屬性您ListViewItems:

 <ListView.ItemContainerStyle> 
      <Style TargetType="{x:Type ListViewItem}"> 
       <Style.Triggers> 
        <DataTrigger Binding="{Binding Path=Equality}" Value="true"> 
         <Setter Property="Background" Value="ColorWhenTrue"/> 
        </DataTrigger> 
        <DataTrigger Binding="{Binding Path=Equality}" Value="false"> 
         <Setter Property="Background" Value="ColorWhenFalse"/> 
        </DataTrigger> 
       </Style.Triggers> 
      </Style> 
     </ListView.ItemContainerStyle> 
0

下面是一個項目的鏈接,演示了我相信你在找什麼:http://www.codeproject.com/Articles/18585/Highlighting-Items-in-a-WPF-ListView。您將需要更改轉換器代碼的代碼,因爲您的屬性是布爾值,而不是整數,並將綁定更改爲您的屬性名稱。

+0

首先謝謝你,我已經看到了這個選項,但我糾纏在代碼中。我沒有把我在這個例子上坐了45分鐘的地方放在哪裏,沒有任何真正的工作。 –

+0

你對哪個部分感到困惑?轉換器只是您添加到項目中的一類。數據觸發器樣式代碼可以放置在中或單獨的資源文件中。你下載了這個項目嗎? –

1

嗨嘗試使用轉換器

public class BoolToColorConverter : IValueConverter 
{ 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value is bool && (bool)value) 
      return new SolidColorBrush(Colors.Red); 
     else 
      return null; 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

<Window.Resources> 
    <conv:BoolToColorConverter x:Key="boolToColorConverter"/> 
</Window.Resources> 

<GridViewColumn Header="Product" Width="60" DisplayMemberBinding="{Binding ProductID}" BackGround="{Binding Equality, Converter={StaticResource boolToColorConverter}}" /> 

我希望這會給你一個想法。