如何在绑定列表中使用用户控件?

时间:2014-05-28 07:54:57

标签: .net wpf user-controls event-handling wpf-controls

我有一个名为( ProfileControl )的用户控件,其图片包含两个文本块和一个按钮 。我想要的是在我的应用程序视图的主页面中显示来自SQL Server的数据,每个控件在水平方向上彼此相邻。当我按下控件中的按钮时响应。

我将使用 scrollviewer 进行自动调整大小。但是我不确定如果它是列表框 listview 等什么,我也不确定如何正确构建。另请参阅如何在XAML中启用按钮的自定义事件处理程序。

到目前为止我做了什么: -

<ScrollViewer>
   <ListBox Name="profileList" ItemsSource="{Binding}">
      <ListBox.ItemTemplate>
         <DataTemplate>
            <StackPanel Orientation="Horizontal">
               <profileControl:ProfileControl />
             </StackPanel>
         </DataTemplate>
      </ListBox.ItemTemplate>
   </ListBox>
</ScrollViewer>

谢谢,

更新:与下面的回复一样,我做了以下

<ListBox Name="profileList" ItemsSource="{Binding}">
                <!--<ListBox.ItemTemplate>
                    <DataTemplate>
                        <profileControl:ProfileControl />
                    </DataTemplate>
                </ListBox.ItemTemplate>-->
                <ListBox.ItemsPanel>
                    <ItemsPanelTemplate>
                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Top"/>
                    </ItemsPanelTemplate>
                </ListBox.ItemsPanel>
            </ListBox>

我评论了ItemTemplete部分,我确实设法从数据库中查看数据。唯一缺少的是我需要启用用户控件的事件句柄(这是一个按钮),我需要在xmal中编写(OnClickUserControl =&#34; UC_OutButton&#34; //这是事件处理程序和目标方法)。

但我不知道该怎么做..请告诉我。

1 个答案:

答案 0 :(得分:2)

如果您想更改商品的堆叠方式,则需要更改ItemsPanel的{​​{1}}

Listbox

也不需要<ListBox Name="profileList" ItemsSource="{Binding}"> <ListBox.ItemTemplate> <DataTemplate> <profileControl:ProfileControl /> </DataTemplate> </ListBox.ItemTemplate> <ListBox.ItemsPanel> <ItemsPanelTemplate> <StackPanel Orientation="Horizontal"/> </ItemsPanelTemplate> </ListBox.ItemsPanel> </ListBox> ,因为它已经是ScrollViewer的默认模板的一部分。至于ListBox不确定你是什么意思启用XAML中按钮的自定义事件处理程序但是Button应绑定到你的某些Button.Command查看模型,将由ICommand控件

显示