我在列表框的数据模板中有了tetbox。该文本框是可编辑的。如何在selection changed事件中获取textbox文本值。如果我尝试使用visual tree查找文本,它不会返回任何内容。请帮帮忙
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>发布于 2014-07-14 20:55:39
我只是添加了textbox文本属性模式作为两种方式。在selection changed事件中,将所选项目作为类获取。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>https://stackoverflow.com/questions/24731109
复制相似问题