У меня есть индикатор выполнения, цвет которого я хочу изменить в зависимости от логического значения: true - зеленый, false - красный. У меня есть код, который кажется, что он должен работать (он возвращает правильное значение, когда я привязываю его к текстовому полю), но не тогда, когда это свойство цвета индикатора выполнения. Конвертер определяется как this (в App.xaml.cs, поскольку я хотите получить к нему доступ где угодно):
public class ProgressBarConverter : System.Windows.Data.IValueConverter
{
public object Convert(
object o,
Type type,
object parameter,
System.Globalization.CultureInfo culture)
{
if (o == null)
return null;
else
//return (bool)o ? new SolidColorBrush(Colors.Red) :
// new SolidColorBrush(Colors.Green);
return (bool)o ? Colors.Red : Colors.Green;
}
public object ConvertBack(
object o,
Type type,
object parameter,
System.Globalization.CultureInfo culture)
{
return null;
}
}
Затем я добавляю следующее в App.xaml (чтобы он мог быть глобальным ресурсом):
Я добавил следующее в MainPage.xaml, чтобы отобразить их:
А затем в MainPage.xaml.cs я определяю класс для хранения данных и привязываю их к listBox:
namespace PhoneApp1
{
public class TestClass
{
public bool isNeeded { get; set; }
public string name { get; set; }
}
public partial class MainPage : PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
var list = new LinkedList();
list.AddFirst(
new TestClass {
isNeeded = true, name = "should be green" });
list.AddFirst(
new TestClass {
isNeeded = false, name = "should be red" });
listBox.ItemsSource = list;
}
}
}
Я приложил минимальный рабочий пример , чтобы его можно было просто собрать и протестировать. Изображение вывода здесь:
Он возвращает значения из преобразователя для текстового поля, но не индикатор выполнения. Когда я запускаю отладчик, он даже не вызывает его.
Спасибо за любую помощь!