16

行と列の形式でユーザー コントロールを設定する次のコードがあります。設定されているユーザー コントロールには、ボタン、リンク、テキスト ボックスなどが含まれます。特定の行/列の特定のユーザー コントロールで特定のボタンが押された場合、そのボタンが押されたユーザー コントロールを知る必要があります。行と列にユーザー コントロールを設定する XAML を次に示します。

  <ItemsControl ItemsSource="{Binding Templates}" Width="{Binding GridWidth}">
        <ItemsControl.ItemsPanel>
              <ItemsPanelTemplate>
                    <UniformGrid Columns="{Binding NumColumns}" />
              </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>
              <ItemsControl.ItemContainerStyle>
                 <Style>
                     <Setter Property="Grid.Column" Value="{Binding ColumnIndex}" />
                     <Setter Property="Grid.Row" Value="{Binding RowIndex}" />
                  </Style>
                 </ItemsControl.ItemContainerStyle>
                 <ItemsControl.ItemTemplate>
  </ItemsControl>

テンプレートは基本的に、行/列に設定されている UserControls のコレクションです。できればViewModelでこれを行いたいのですが、今のところコードビハインドのソリューションもうまくいきます。

4

2 に答える 2

25

ItemsControlアイテムを選択することはできません。コレクションのみを提示します。Selectorまたはその子孫の 1 つだけが項目を選択できます。

あなたのシナリオでは、 GridViewを使用したListViewが適していると思います。ユーザーが行内のコントロールをクリックすると、イベントが にバブリングし、アイテムが選択されます。デフォルトのスタイルをオーバーライドして、選択された行として表示されないようにすることができます: WPF ListView turn off selectionListView

于 2013-08-27T07:08:38.327 に答える