У меня проблема с MultiBinding.Кажется, что последнее значение второго свойства не выбирается при изменении первого свойства.
<Image Width="16" Source="../Images/YellowScales.png" Grid.Column="1" >
<Image.Visibility>
<MultiBinding Converter="{Converters:GoldScaleConverter}">
<Binding Path="IsFavourite"/>
<Binding Path="MemoryUsageLevel"/>
</MultiBinding>
</Image.Visibility>
</Image>
В ViewModel:
public bool IsFavourite
{
get { return _isFavourite; }
set
{
if (_isFavourite == value)
return;
_isFavourite = value;
RaisePropertyChanged("IsFavourite");
UnloadBookCommmand.RaiseCanExecuteChanged();
}
}
public double MemoryUsageLevel
{
get
{
return GetMemoryUsageLevel(this);
}
}
Первоначально при запуске приложения оба свойстваудаляются из конвертера, и он работает, как и ожидалось.
Однако, как только приложение запускается, и я изменяю свойство IsFavourite, оно запускает мультисвязывание, и я вижу в конвертере, что IsFavourite перевернул, но второе значението есть MemoryUsageLevel всегда 0.0.Получатель больше не срабатывает.
Но почему я думал, что MultiBinding предназначен для проверки последнего значения обоих Привязок?
Это преобразователь:
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
bool isFavourite = (bool) values[0];
double memoryWarningLevel = (double) values[1];
if(isFavourite && (memoryWarningLevel >= 50.00 && memoryWarningLevel < 75.00))
{
return Visibility.Visible;
}
return Visibility.Collapsed;
}