在ItemsControl中获取所选项目

WAQ*_*WAQ 11 wpf xaml binding

我有以下代码以行和列的形式填充我的用户控件.正在填充的用户控件包含按钮,链接,文本框等.当在特定行/列中的特定用户控件上按下某个按钮时,我需要知道该按钮被按下了哪个用户控件.以下是在行和列中填充用户控件的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>
Run Code Online (Sandbox Code Playgroud)

模板基本上是在行/列中填充的UserControl的集合.我希望在ViewModel中执行此操作,但现在代码中的解决方案也可以正常工作.

CKI*_*KII 19

ItemsControl无法选择项目,仅显示集合.只有选择器或其中一个后代才能选择项目.

对于您的场景,我认为使用GridViewListView是合适的.当用户单击该行中的控件时,该事件将冒泡到该项并且该项将被选中.您可以覆盖默认样式,使其不显示为选定行:WPF ListView关闭选择.ListView

  • 您可以将它们设置为商品的数据模板 (2认同)