यह सूची में क्लिक किए गए आइटम के आधार पर कमांड (व्यूमोडेल में) को ट्रिगर करने के लिए एक विधि का एक कामकाजी उदाहरण है। व्यूमोडेल में कमांड को "क्लिक" आइटम को इसके पैरामीटर के रूप में प्राप्त होगा।
मैं टेक्स्टब्लॉक का उपयोग कर रहा हूं। इनपुट बाइंडिंग और यह ब्लेंड एसएमके ब्लैंचमा से जुड़ा हुआ हो सकता है, लेकिन इसके लिए आपको किसी अन्य डीएलएल की आवश्यकता नहीं होगी।
मेरी उदाहरण ViewModel में UserControl के DataContext के लिए बाध्य है, यही कारण है कि मैं अपने TextBlock से ViewModel खोजने के लिए RelativeSource FindAncestor उपयोग करने की आवश्यकता है।
संपादित: TextBlock की चौड़ाईActualWidth ListBox की से जुड़ कर चौड़ाई समस्या ठीक की गई।
बस एक समस्या, डबल क्लिक करें केवल जब तुम TextBlock में पाठ के अंदर क्लिक करें, भले ही स्वयं सूची बहुत व्यापक है काम करेंगे।
<ListView ItemsSource="{Binding Model.TablesView}" Grid.Row="1"
SelectedItem="{Binding Model.SelectedTable, Mode=TwoWay}" >
<ListView.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=.}"
Width="{Binding Path=ActualWidth,
RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}" >
<TextBlock.InputBindings>
<MouseBinding MouseAction="LeftDoubleClick" Command="{Binding DataContext.MoveItemRightCommand,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}}"
CommandParameter="{Binding .}"/>
</TextBlock.InputBindings>
</TextBlock>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
स्रोत
2012-12-24 22:55:24
एक नज़र [यहां] (लो http://stackoverflow.com/questions/4785685/wpf-and-mvvm-binding -वेन्ट्स) माउस घटनाओं के लिए एक एमवीवीएम उदाहरण के लिए। –