在Windows Phone 7 C#中的列表框内绑定文本框

时间:2014-07-14 07:00:31

标签: c# windows-phone-7 windows-phone

我在列表框数据模板中有tetbox。该文本框是可编辑的。如何在选择更改事件中获取文本框文本值。如果我试图使用可视树找到文本,它什么都不返回。请帮忙

ListBoxItem item = this.lstProds.SelectedItem as ListBoxItem;
PhoneTextBox targetBox = FindFirstElementInVisualTree<PhoneTextBox>(item);
string a = targetBox.Text;

private T FindFirstElementInVisualTree<T>(DependencyObject parentElement)   where T : DependencyObject
{
        var count = VisualTreeHelper.GetChildrenCount(parentElement);
        if (count == 0)
            return null;

        for (int i = 0; i < count; i++)
        {
            var child = VisualTreeHelper.GetChild(parentElement, i);

            if (child != null && child is T)
            {
                return (T)child;
            }
            else
            {
                var result = FindFirstElementInVisualTree<T>(child);
                if (result != null)
                    return result;
            }
        }
        return null;
}

XAML:

  <ListBox Name="lstProds" Margin="0,59,0,0" Background="{x:Null}" Foreground="Black" SelectionChanged="lstProds_SelectionChanged">
     <ListBox.ItemTemplate>
        <DataTemplate>
          <Grid Height="auto">
            <Border BorderBrush="Black" BorderThickness="1" Margin="68,63,-58,-13">
             <toolkit:PhoneTextBox Name="txtQuantity" Hint="Quantity"  Width="180" Text="{Binding Quantity}"></toolkit:PhoneTextBox>
            </Border>
           </Grid>
          </DataTemplate>
         </ListBox.ItemTemplate>
   </ListBox>

1 个答案:

答案 0 :(得分:0)

我只是将文本框文本属性模式添加为双向。在选择更改事件中,将所选项目作为类。 var context =(lstProds.SelectedItem as ModelClass); string a = context.Quantity;

  <ListBox Name="lstProds" Margin="0,59,0,0" Background="{x:Null}" Foreground="Black" SelectionChanged="lstProds_SelectionChanged">
            <ListBox.ItemTemplate>
                <DataTemplate>
<Grid>
<Border BorderBrush="Black" BorderThickness="1" Margin="91,69,0,9" HorizontalAlignment="Left" Width="145">
                        <toolkit:PhoneTextBox Name="txtQuantity" Hint="Quantity" Width="144" Text="{Binding Quantity,Mode=TwoWay}"></toolkit:PhoneTextBox>
                </Border>    
</Grid>
            </Border>
            </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>