<MenuItem Command="local:CommandLibrary.RegisterServiceCommand">
<MenuItem.CommandParameter>
<MultiBinding Converter="{StaticResource TrayWindowViewModelConverterResource}">
<MultiBinding.Bindings>
<Binding ElementName="Me" />
<Binding FallbackValue="Parser" />
</MultiBinding.Bindings>
</MultiBinding>
</MenuItem.CommandParameter>
</MenuItem>
public class TrayWindowViewModelConverter : IMultiValueConverter {
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) {
var viewModel = new Window1ViewModel();
foreach (var obj in values) {
if (obj is Window)
viewModel.Caller = obj as Window;
else if (obj is string)
viewModel.ServiceName = obj.ToString();
}
return viewModel;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture) {
throw new NotImplementedException();
}
}
Schaltfläche camand ist genau wie MenuItem. Wenn ich Converter für MenuItem debugge, enthält Werte Parameter zwei Objekt: DependencyProperty.UnsetValue (ich weiß nicht, was ist das) und MyContextMenu-Objekt.Warum MenuItem nicht angegebene Parameter sendet, aber Button sende
Und wie kann ich SomeType als Parameter übergeben? Danke
Dank John aber was ist die Lösung oder Umgehung? – Sadegh
Für Situationen wie diese sollten Sie versuchen, sich auf Daten und nicht auf UI-Elemente zu verlassen. Anstatt eine Window-Instanz an Ihr Ansichtsmodell zu übergeben, versuchen Sie, das Ansichtsmodell des Fensters oder einen Teil davon zu übergeben. Dadurch werden nicht nur Ihre V-VM-Ebenen getrennt, sondern Sie können auch den geerbten DataContext (der immer noch an MenuItems und ToolTips übergeben wird) für Ihre Bindung nutzen. –