0

我有一个ListView有一些价值。我想更改ListView的字体颜色,但此代码不起作用:

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:sys="clr-namespace:System;assembly=mscorlib"
    DataContext="{Binding RelativeSource={RelativeSource Self}}"
    Title="Navi" mc:Ignorable="d" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 

    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" Height="603" Width="1029"
    ShowInTaskbar="True" Closing="Window_Closing" Background="#FFD6D6D6">
<Window.Resources>

    <Style TargetType="{x:Type TextBlock}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding DarkTheme}" Value="True">
                <Setter Property="Control.Foreground" Value="Red"/>
            </DataTrigger>
        </Style.Triggers>
    </Style>

CS:

public Int32 DarkTheme {get; set;}
    //First init
    public MainWindow()
    {
        DarkTheme = 1;
        //Init component

我究竟做错了什么?

4

1 回答 1

1

DarkTheme从更改Int32bool

public bool DarkTheme {get; set;}


DarkTheme = true;

或者

您还可以创建可以在Binding中使用的转换器

 public class IntToBooleanConverter : IValueConverter
    {
      public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
      {
        if (value is int)
        {
            if ((int)value) == 1)
                return true;
            return false;
        }

        return DependencyProperty.UnsetValue;
      }

    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
    {
       if (value is bool)
        {
            if ((bool)value) )
                return 1;
            return 0;
        }

        return DependencyProperty.UnsetValue;
    }
于 2012-12-30T17:37:48.223 回答