silverlight   发布时间:2022-05-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了是否可以绑定Silverlight DataTemplate中的事件?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

是否可以绑定Silverlight DataTemplate中的事件?如果是这样,最好的方法是什么? 例如,假设您已经创建了一个具有Button的DataTemplate,如下所示: <UserControl.resources> <DataTemplate x:Key="MyDataTemplate" > <Grid> <Button Content="{Bindi
是否可以绑定Silverlight DataTemplate中的事件?如果是这样,最好的方法是什么?

例如,假设您已经创建了一个具有Button的DataTemplate,如下所示:

<UserControl.resources>
  <DataTemplate x:Key="MyDataTemplate" >
     <Grid>
        <Button Content="{Binding Buttontext}" Margin="4" />
     </Grid>
  </DataTemplate>
</UserControl.resources>

然后,将其应用于ListBox ItemTemplate,如下所示:

<Grid x:Name="LayoutRoot" BACkground="White">
  <ListBox x:Name="lbListBox" ItemTemplate="{Staticresource MyDataTemplatE}" />    
</Grid>

如果将ListBox的Itemsource设置为类的对象列表:

public class MyDataClass
{
  public String Buttontext{ get; set; }
}

那么您如何从列表中的DataTemplate中的每个按钮中点击按钮呢?您可以使用绑定将Click事件绑定到“MyButtonClass”中的方法,如下所示:

<UserControl.resources>
  <DataTemplate x:Key="MyDataTemplate" >
     <Grid>
        <Button Click="{Binding OnItemButtonClick}" Content="{Binding Buttontext}" Margin="4" />
     </Grid>
  </DataTemplate>
</UserControl.resources>

这会工作吗如果是这样,我应该把什么放在“MyDataClass”中来捕捉事件?

谢谢,
杰夫

解决方法

有几个选项.

一.创建绑定该行的数据对象的自定义控件.在该自定义控件上添加绑定对象的处理程序.

我不认为您对点击的约束将起作用.没有绑定文档,只是声明你的点击字符串.

在控件的页面添加处理程序.
请记住,如果绑定这种方式,您将只能与该项目的发件人(按钮)一起工作,它是属性.如果您需要获取对象上的特定属性,则可能最好追求第一个选项.

小例子通过在点击事件的列表框中添加10个按钮来演示功能. HTH

DataTemplate XAML

<UserControl.resources>
    <DataTemplate x:Name="MyDataTemplate">
        <Grid>
            <Button Click="Button_Click" Content="{Binding ItemText}"/>
        </Grid>
    </DataTemplate>
</UserControl.resources>

ListBox XAML

<ListBox x:Name="ListBoxThingee" ItemTemplate="{Staticresource MyDataTemplatE}"/>

代码背后(我只是将这一切都插入到page.xaml文件

public class MyClass
{
    public String ItemText { get; set; }
}


public partial class Page : UserControl
{
    ObservableCollection<MyClass> _Items;
    public Page()
    {
        InitializeComponent();

        _Items = new ObservableCollection<MyClass>();

        for (int i = 0; i < 10; i++)
        {
            _Items.Add(new MyClass() {ItemText= String.Format("Item - {0}",i)});
        }

        this.ListBoxThingee.Itemssource = _Items;
    }

    private void Button_Click(object sender,RoutedEventArgs E)
    {
        Button _b = sender as Button;
        if (_b != null)
        {
            String _s = _b.Content as String;
            messageBox.Show(_s);
        }

    }
}

大佬总结

以上是大佬教程为你收集整理的是否可以绑定Silverlight DataTemplate中的事件?全部内容,希望文章能够帮你解决是否可以绑定Silverlight DataTemplate中的事件?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。