2012-03-30 10 views
2

Windowsの電話アプリケーションでMVVM(ライトツールキット)を使用します。 私はリストボックスを持っています。SelectedItemは、SelectedArticleプロパティにバインドされています。ここで(非常にシンプルな)プロパティ以下 :ListBox(MVVM)でアイテムとアイテムが選択されているロジックを実装する良い方法

private Article _selectedArticle; 
public Article SelectedArticle 
{ 
    get { return _selectedArticle; } 
    set 
    { 
      _selectedArticle = value; 
      base.RaisePropertyChanged("SelectedArticle"); 
    } 

} 

だから私は希望するビューを変更することで、リストボックスの要素がチェックされます。 とにかく、settetにビューの変更を入れるのは簡単ですが、私はそれを避けたいと思います。だからそれをどうやる?ここでは、XAML

<ListBox IsEnabled="{Binding ListBoxEnabled, Mode=TwoWay}" SelectedItem="{Binding SelectedArticle, Mode=TwoWay}" Opacity="{Binding Opacity, Mode=TwoWay}" ItemsSource="{Binding ArticlesList}" Height="634" Width="456"> 
     <ListBox.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image 
         Margin="0,15" 
         VerticalAlignment="Top" 
         Source="{Binding Image}" 
         Height="100" 
         Width="100" /> 
        <StackPanel> 
         <TextBlock Margin="10,15" 
            Width="250" 
            TextWrapping="Wrap" 
            VerticalAlignment="Top" 
            HorizontalAlignment="Left" 
            FontSize="24" 
            Text="{Binding Content}" /> 
         <TextBlock Margin="20,0" 
            Width="100" 
            VerticalAlignment="Top" 
            HorizontalAlignment="Left" 
            FontSize="20" 
            Text="{Binding Id}"/> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
     </ListBox.ItemTemplate> 
    </ListBox> 

答えて

3

はあなたが対話トリガーのような何かをしたいですか?
があなたのXAMLに

<i:Interaction.Triggers> 
    <i:EventTrigger EventName="Tap"> 
     <cmd:EventToCommand Command="{Binding EventTapCommand, Mode=OneWay}"/> 
    </i:EventTrigger> 
</i:Interaction.Triggers> 

これを追加して、必要であれば、あなたもあなたのリストから選択したアイテムを渡すことができ、あなただけ設定する必要があなたのViewModelに

public RelayCommand EventTapCommand { get; private set; } 
public MainViewModel() 
{ 
    EventTapCommand = new RelayCommand(DoSomeCoolStuff); 
} 

をRelayCommandを定義しますCommandParameterを開き、項目タイプを使用してRelayCommandを定義します。私は正確なバインディング構文を忘れています。次のようなもの:

<cmd:EventToCommand Command="{Binding EventTapCommand, Mode=OneWay}" CommandParameter="{Binding}"/> 

public RelayCommand<MyType> EventTapCommand { get; private set; } 
関連する問題