从DataTemplate windows phone 7中的控件获取价值

时间:2013-08-23 13:50:51

标签: windows-phone-7 datatemplate itemtemplate

我在Windows Phone 7中使用dataTemplate。我使用数据模板自定义了Listbox。现在我需要从自定义列表框中获取值。请检查下面的代码。

     <phone:PhoneApplicationPage.Resources>
    <Style x:Key="Image_List" TargetType="ListBox">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ListBox">
                    <Grid>
                        <Rectangle Fill="#FF030403" RadiusY="10" RadiusX="10"    Stroke="#1BA1E2" StrokeThickness="2"/>
                        <ScrollViewer x:Name="ScrollViewer">
                            <ItemsPresenter Height="Auto"/>
                        </ScrollViewer>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
 </phone:PhoneApplicationPage.Resources>
    <ListBox BorderBrush="#1BA1E2" Name="Image_Listbox" Margin="5,53,6,6" Style="{StaticResource Image_List}">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border CornerRadius="5" BorderBrush="#1BA1E2" BorderThickness="1" Margin="3,1,0,0" Height="69" Width="445">
                        <StackPanel Margin="0,0,0,0" Background="Transparent"  Orientation="Horizontal" Height="69" Width="400">
                            <CheckBox Name="Images_Check" Margin="0,0,0,0" Content="" Height="67"  HorizontalAlignment="Left"/>
                            <TextBlock TextAlignment="Left" FlowDirection="LeftToRight" Width="Auto"  FontSize="22" Text="{Binding UBindData}" Height="40" />
                        </StackPanel>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

我正确地获取UI_Template。用户将在提供的复选框中检查所需的项目。现在我需要在我的代码中获取已检查的项目。任何人都可以帮我解决这个问题吗?如何获取用户检查的Items和Itemvalue。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我在一天的战争后得到了解决方案。就这样。我从诺基亚开发者网站获得了解决方案。您可以查看是否选中了datatemplate中的复选框及其相应的Textblock值。

 //Variables to store the count of checked Checkboxes and their data
    public string option_selected = "";
    public int check_count = 0;

    //SearchElement populates above variables for checkboxes in specified "targeted_control"
    public void SearchElement(DependencyObject targeted_control)
    {
        var count = VisualTreeHelper.GetChildrenCount(targeted_control);   // targeted_control is the listbox
        if (count > 0)
        {
            for (int i = 0; i < count; i++)
            {
                var child = VisualTreeHelper.GetChild(targeted_control, i);
                if (child is CheckBox) // specific/child control 
                {
                    CheckBox targeted_element = (CheckBox)child;
                    if (targeted_element.IsChecked == true)
                    {
                        if (targeted_element.Tag!= null)
                        {
                            // get the value associated with the "checked" checkbox  
                            option_selected = targeted_element.Tag.ToString();
                        }
                        // count the number of "Checked" checkboxes
                        //check_count = check_count + 1;
                        return;
                    }
                }
                else
                {
                    SearchElement(child);
                }
            }
        }
        else
        {
            return;
        }
    }