3

WPFを初めて使用するので、簡単な質問をするかもしれませんが、過去5時間にわたって解決策を探しましたが、何も見つかりませんでした。行に色を付ける
かどうかを示すbool値で構成されるクラスがあります。 残りの列の値をバインドしていますが、色の列がないため、その方法を理解しようとして立ち往生しています。ListView

私はsを試しStyle、sを試しDataTemplate(それらをどこに置くかを理解するのに少し時間がかかりましたが、私はそれを理解しました)、呼び出し方法がわからなかった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行に色を付けるかどうかを示すブール値を除いて、すべてが表示されます。

アップデート

これは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>

これは私が現在持っているものです。

4

3 に答える 3

2

ItemContainerStyle-property を使用して 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>
于 2013-01-04T14:37:00.807 に答える
2

こんにちは、Converter を使用して試してください

    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}}" />

これがあなたにアイデアを与えることを願っています。

于 2013-01-04T14:24:04.020 に答える
0

これは、あなたが探していると私が信じているものを示すプロジェクトへのリンクです: http://www.codeproject.com/Articles/18585/Highlighting-Items-in-a-WPF-ListView。プロパティはブール値であり整数ではないため、コンバータ コードのコードを変更し、プロパティ名へのバインディングを変更する必要があります。

于 2013-01-04T14:15:34.693 に答える