1

こんにちは、MVVM-light を使用して WinRT 用のアプリケーションを開発しています。私がやろうとしているのは、コンボボックスに4種類の果物などのアイテムを入れることです。そして、私の SelectedItem は、コンボボックスがバインドされる最初の種類のフルーツである必要があります。これは機能しますが、次のステップは、selectedIndex を変更することです。たとえば、最初の種類の果物が売り切れた場合、SelectedIndex は、コレクションのコンボボックスの 2 番目のアイテムに自動的に変更されます。

したがって、10 個の果物を購入したい場合、画面に 10 個のコンボボックスが表示され、果物の種類を選択できます。そのうちの 4 個でリンゴを選択し、リンゴがなくなった場合は、他のコンボボックスは、2 番目の種類のフルーツに変更する必要があります。

私はそれが少し紛らわしい質問であることを知っています.

基本的に必要なのは、コンボボックスのコレクションとは異なるコレクション内のプロパティに Selectedindex をバインドできるようにすることです。うまくいけば、もう少し説明できるxamlを少し提供します。

 </ListView>
   <ListView.ItemTemplate>
      <DataTemplate>
          <StackPanel IsHitTestVisible="{Binding HitTest}"  Orientation="Horizontal">
               <TextBlock Text="{Binding Day, Converter={StaticResource StringFormatConverter}, ConverterParameter='{}{0:dd MMM yyyy}' }"></TextBlock>
               <ComboBox Width="196"  ItemsSource="{Binding Path=FruitKind.FruitList, Source={StaticResource Locator}}" SelectedIndex="{Binding Path=FruitKind.FruitComboBoxItem, Source={StaticResource Locator}, ElementName={Binding Path=FruitIndex}}">
                  <ComboBox.ItemTemplate>
                     <DataTemplate>
                        <TextBlock Text="{Binding FruitKind}"/>
                     </DataTemplate>
                  </ComboBox.ItemTemplate>
              </ComboBox>
          </StackPanel>
     </DataTemplate>
   </ListView.ItemTemplate>
 </ListView>

ちなみに、これが可能かどうかはわかりません。thnx

4

1 に答える 1

0

インデックスではなく、選択したアイテムにバインドします。これにより、任意の方法で変更できるビューモデルのオブジェクト/プロパティを操作できます。

すなわち:

<ComboBox Width="196"  ItemsSource="{Binding Path=FruitKind.FruitList, Source={StaticResource Locator}}" SelectedItem="{Binding Path=FruitKind.FruitObject, Source={StaticResource Locator}, ElementName={Binding Path=FruitIndex}}">
于 2013-03-21T02:50:09.823 に答える