簡體   English   中英

Windows Phone 7-無法從ViewModel觸發事件。

[英]Windows Phone 7 - Can not trigger the event from ViewModel.

我想從視圖模型中為列表框編寫事件。 我這樣嘗試:-

 <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="Gray" Padding="5" BorderThickness="1">
                        <StackPanel Orientation="Horizontal">
                            <Border BorderBrush="Wheat" BorderThickness="1">
                                <Image  Name="ListPersonImage" Source="{Binding PersonImage}" Height="100" Width="100" Stretch="Uniform" Margin="10,0,0,0"/>
                            </Border>
                            <TextBlock Text="{Binding FirstName}" Name="firstName" Width="200" Foreground="White" Margin="10,10,0,0" FontWeight="SemiBold" FontSize="22"  />

                            <Button DataContext="{Binding DataContext, ElementName=listBox1}" Command="{Binding addPerson}" Height="80" Width="80" >
                                <Button.Background>
                                    <ImageBrush  ImageSource="{Binding imagePath,  Converter={StaticResource pathToImageConverter}}" Stretch="Fill" />
                                </Button.Background>
                            </Button>                               
                        </StackPanel>
                    </Border>
                    <i:Interaction.Triggers>
                        <i:EventTrigger EventName="Tap">
                            <i:InvokeCommandAction Command="{Binding ItemSelectedCommand,Mode=OneWay}" CommandParameter="{Binding}"/>
                        </i:EventTrigger>
                    </i:Interaction.Triggers>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

我的ViewModel:-

  public RelayCommand<MVVMListBoxModel> ItemSelectedCommand { get; private set; }
 public MVVMListBoxViewModel()
        {
           ItemSelectedCommand = new RelayCommand<MVVMListBoxModel>(ItemSelected);
        }

 private void ItemSelected(MVVMListBoxModel myItem)
        {
            MessageBox.Show("Name==>" + myItem.FirstName);
            //throw new NotImplementedException();
        }

但是什么也沒發生。 請讓我知道我在哪里做錯了。 提前致謝。

檢查輸出窗口以查看是否出現綁定錯誤。 看來您有一個,因為您在ItemSelectedCommand定義了MVVMListBoxViewModel但是ListBoxItemDataContext是對應的MVVMListBoxModel ,因此綁定引擎找不到該命令。

嘗試將ItemSelectedCommand定義ItemSelectedCommand MVVMListBoxModel然后查看消息框是否以這種方式顯示。

您是否希望觸發器基於Listbox項的SelectionChanged 然后,觸發器應該在<ListBox.ItemTemplate> ... </ListBox.ItemTemplate>

並且觸發器應將CommandParamter綁定到SelectedItem

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Tap">
        <i:InvokeCommandAction Command="{Binding ItemSelectedCommand,Mode=OneWay}" CommandParameter="{Binding SelectedItem}"/>
     </i:EventTrigger>
</i:Interaction.Triggers>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM