Я создал простой пример с Mvvm-Light...
здесь полное решение: https://testbindingwithconverter.codepl ... rol/latest
здесь изображение: https://i.sstatic.net/wUf89.png
и ниже резюме исходный код:
CarsView
Код: Выделить всё
Код: Выделить всё
public class CarsViewModel : ViewModelBase
{
private ObservableCollection cars;
private Car selectedCar;
public CarsViewModel()
{
if (IsInDesignMode)
{
}
else
{
// INIT
this.cars = new ObservableCollection();
this.selectedCar = null;
// FAKE DATA
for (int i = 1; i Cars);
}
}
}
public Car SelectedCar
{
get
{
return selectedCar;
}
set
{
if (value != selectedCar)
{
selectedCar = value;
RaisePropertyChanged(() => SelectedCar);
}
}
}
}
Код: Выделить всё
public class IntToOpacityConverter : System.Windows.Data.IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double opacity = 1;
Car c = value as Car;
if (c != null)
{
if (c.Id == 5)
{
opacity = 0.3;
}
}
System.Diagnostics.Debug.WriteLine("[IntToOpacityConverter] \t" + "Rectangle Opacity: " + opacity);
return opacity;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
// One-Way conversion!
return null;
}
Теперь, когда я возвращаюсь к HomeView, а затем снова к CarsView, если я нажимаю между элементами, конвертер вызывается 2 раза!
И еще раз, если я пойду вернитесь в HomeView и вернитесь в CarsView, конвертер вызывается 3 раза! И так далее...
Почему?
Подробнее здесь: https://stackoverflow.com/questions/254 ... navigation
Мобильная версия