c#以编程方式创建列表事件处理程序如何

时间:2012-07-09 09:56:12

标签: checkbox event-handling windows-phone

有谁能告诉我如何在程序创建的列表中连接复选框的单击事件?到目前为止,我只看到了连接静态创建的对象事件的示例,而不是从代码中动态分配的对象。

按照以下代码段中的描述创建列表:

namespace CustomListApp
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
            for (int i = 1; i <= 10; ++i)
            {
                CustomListBoxItem clbi = new CustomListBoxItem();
                clbi.Title.Text = "This is item " + i;
                clbi.Condition.IsChecked = i % 2 == 0;
                CustomListBox.Items.Add(clbi);
            }
        }
    }
}

并且CustomListBoxItem具有以下结构:

<UserControl x:Class="CustomListApp.CustomListBoxItem"[...]>

    <Grid x:Name="ListBoxItemGrid" Background="{StaticResource PhoneChromeBrush}" Height="65">
        <CheckBox x:Name="Condition" Height="67" HorizontalAlignment="Right" VerticalAlignment="Top" Width="65" Click="Condition_Click" />
        <TextBlock x:Name="Title" Height="65" HorizontalAlignment="Left" Margin="84,0,0,0" Text="TextBlock" VerticalAlignment="Center" Width="294" />
    </Grid>
</UserControl>

2 个答案:

答案 0 :(得分:1)

也许您可以创建要添加到列表框中的元素类型。然后你可以检查这样的点击:

<YOUR DATA TYPE> data = (sender as ListBox).SelectedItem as <YOUR DATA TYPE>;

然后您可以处理这些数据。我希望我可以帮助你解决这个问题。

答案 1 :(得分:0)

你的意思是

cbi.Condition.Click += new_click_handler;

其中new_click_handler是您要添加的新点击处理程序?

但你需要以编程方式为每个项添加一个新的处理程序吗?你不能只在你的xaml中已有的Condition_Click处理程序中引用该项吗?