Это старый пост, который я знаю, но у меня та же проблема, и я не смог найти решения в сети.
Я думаю, что он спрашивает, как использовать мультисвязывание, которое не привязывается к элементу GUI, а связывается с более чем одним свойством в модели представления.
Примерно так:
Xaml:
<MenuItem ItemsSource="{Binding MyMenuItem}">
<MenuItem.IsEnabled>
<MultiBinding Converter="{StaticResource IntsToEnabledConverter}">
<Binding Source="{Binding FirstInt}" />
<Binding Source="{Binding SecondInt}" />
</MultiBinding>
</MenuItem.IsEnabled>
</MenuItem>
ViewModel:
public class ViewModel
{
public int FirstInt{ get { return _firstInt;}}
public int SecondInt{ get { return _secondInt;}}
}
Я тоже не смог этого понять. Вместо этого я использовал SingleValueConverter и привязку к родительскому объекту, который содержит обе переменные FirstInt и SecondInt, а в конвертере используется этот родительский элемент, что-то вроде:
public class IntsToEnabledConverter :IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
Parent parent = value as Parent;
if (parent.FirstInt == 1 && parent.SecondInt == 1)
return true;
else
return false;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
Он не такой чистый, как если бы Multibinding, как родитель, мог бы быть большим объектом с большим количеством членов, но в моем случае это сработало. Я бы лучше посмотрел код, если бы мог использовать решение Multibinding.