मेरे पास एक सूची दृश्य है जो स्ट्रिंग मानों की एक सूची प्रदर्शित करता है। मैं चयनित आइटम को हटाने के लिए सूची में प्रत्येक आइटम के लिए एक संदर्भ मेनू प्रविष्टि जोड़ना चाहता हूं। मेरे XAML इस तरह दिखता है:सूचीदृश्य में आइटम हटाने के लिए संदर्भ मेनू
<ListView x:Name="itemsListView" ItemsSource="{Binding MyItems}">
<ListView.ContextMenu>
<ContextMenu>
<MenuItem Header="Remove"
Command="{Binding RemoveItem}"
CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}" />
</ContextMenu>
</ListView.ContextMenu>
</ListView>
समस्या यह है कि CommandParameter
मूल्य हमेशा अशक्त है। मैंने यह आदेश देखने के लिए चयनित आइटम को निकालने के लिए एक अतिरिक्त बटन जोड़ा है कि मेरा आदेश काम करता है या नहीं। बटन बटन बटन के माध्यम से बिल्कुल वही बाध्यकारी और हटाने आइटम है। बटन ऐसा दिखाई देता:
<Button Content="Remove selected item"
Command="{Binding RemoveItem}"
CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}"/>
आदेश इस तरह दिखता है:
private ICommand _removeItem;
public ICommand RemoveItem
{
get { return _removeItem ?? (_removeItem = new RelayCommand(p => RemoveItemCommand((string)p))); }
}
private void RemoveItemCommand(string item)
{
if(!string.IsNullOrEmpty(item))
MyItems.Remove(item);
}
कोई भी विचार क्यों चयनित आइटम अशक्त जब संदर्भ मेनू खोलने है
? शायद सूचीदृश्य की एक फोकस समस्या है?
अपने आउटपुट विंडो में एक नज़र RelativeSource उपयोग कर सकते हैं, मुझे यकीन है कि आप एक बाध्यकारी त्रुटि संदेश दिखाई देगा। चूंकि कॉन्टेक्स्टमेनू एक नई विंडो है, मुझे यकीन नहीं है कि यह आइटम लिस्ट व्यू तक पहुंच सकता है। –
http://stackoverflow.com/questions/1013558/elementname-binding-from-menuitem-in-contextmenu और http://stackoverflow.com/questions/2617122/wpf-menuitem-command-binding-to के आसपास एक नज़र डालें -elementname-results-to-system-windows-data-error –