问题
Iam working on dataTemplate in windows phone 7. I had customised Listbox with data template. now i need to get the values from the customised listbox. Please check the code is below.
<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>
Iam getting the UI_Template correctly.the user will check the required Items in the checkbox provided. now i need to get the checked items in my code. can anybody help me out of this? How to get the checked Items and Itemvalue by the user.
Thanks in advance.
回答1:
I had got solution after a day war.Here it goes.I got solution from nokia developer site. you can get whether checkbox inside datatemplate is checked and its corresponding Textblock value.
//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;
}
}
来源:https://stackoverflow.com/questions/18404559/getting-value-from-a-control-inside-datatemplate-windows-phone-7