0

まず、私の悪い英語をお詫びします。

各行が 1 人を表すリストビューに xml をバインドしています。XMLの性別要素に応じて、行の背景色を青またはピンクにしたい。トリガーを使用してスタイルを作成しましたが、最初の xml ノードのみをチェックしているようで、すべての行が 1 行目と同じ色になっています。Xml 要素の性別は、男性の場合は 0、女性の場合は 1 です。

1 つの DataTrigger (2 つ目も同様):

<DataTrigger Binding="{Binding Source={StaticResource Data}, XPath=People/Person/Sex}" Value="0">
    <Setter Property="Background" Value="{StaticResource MaleBrush}" />
</DataTrigger>

これは、リストビューへの xml およびスタイル バインドです (データは XmlDataProvider):

<ListView ... ItemsSource="{Binding Source={StaticResource Data}, XPath=People/Person}" ItemContainerStyle="{StaticResource SexStyle}">

そして、これはスタイルヘッダーです:

<Style x:Key="SexStyle"  TargetType="{x:Type ListViewItem}">

手伝ってくれてありがとう!

4

1 に答える 1

0

これには ValueConverter を使用する必要があります。

データ テンプレートの背景を性別にバインドします。次に、次のような値コンバーター クラスを作成します。

   public sealed class GenderToBackgroundConverter : IValueConverter
   {

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
    {
        if (value is string) {
            if (Convert.ToString(value) == "m") {
                return Colors.Blue;
            } else {
                return Colors.Pink;
            }
        }
    }

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

次に、この値コンバーターを次のようにリソースに追加します。

<local:GenderToBackgroundConverter x:Key="GenderToBackgroundConverter" />

そしてあなたのデータテンプレートで:

<Stackpanel Background={Binding Sex, Converter={StaticResource GenderToBackgroundConverter}}">

</Stackpanel>
于 2013-03-30T19:32:52.987 に答える