Windows phone 7 如何在数据模板中选择文本框
在为WindowsPhone7编程时,我创建了一个列表框,并使用了包含textblock和textbox的DataTemplate。默认情况下,文本框处于隐藏状态 XAML:Windows phone 7 如何在数据模板中选择文本框,windows-phone-7,Windows Phone 7,在为WindowsPhone7编程时,我创建了一个列表框,并使用了包含textblock和textbox的DataTemplate。默认情况下,文本框处于隐藏状态 XAML: <ListBox> <ListBox.ItemTemplate> <DataTemplate> <Canvas Width="460" Height="60" Background="{StaticResour
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Canvas Width="460" Height="60" Background="{StaticResource PhoneAccentBrush}">
<TextBlock Text="{Binding data}" FontSize="30" Margin="10,10,10,0"/>
<TextBox Height="60" Width="460" Visibility="Collapsed"/>
</Canvas>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
然而,显然选择器是不正确的。我试图为textbox和textblock添加名称,但该名称在数据模板中似乎不起作用。有人能告诉我如何在数据模板中选择文本块和文本框吗?非常感谢 在模板上设置名称确实有效,但您不能直接访问它 相反,可以这样尝试:
<ListBox x:Name="MyListBox">
<ListBox.ItemTemplate>
<DataTemplate>
<Canvas Width="460" Height="60" Background="{StaticResource PhoneAccentBrush}">
<TextBlock x:Name="MyTextBlock" Text="{Binding data}" FontSize="30" Margin="10,10,10,0" Tap="MyTextBlock_Tap" />
<TextBox x:Name="MyTextBox" Height="60" Width="460" Visibility="Collapsed"/>
</Canvas>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
试试这个:
<ListBox Name="lst" >
<ListBox.ItemTemplate>
<DataTemplate>
<Canvas Width="460" Height="60" Background="{StaticResource PhoneAccentBrush}" Tap="Canvas_Tap">
<TextBlock Text="{Binding}" FontSize="30" Margin="10,10,10,10"/>
<TextBox Height="60" Width="460" Visibility="Collapsed" Text="text"/>
</Canvas>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
嗨,Pedro,我尝试了你的代码,但是Visual Studio为GetTemplateChild报告了错误。我错过什么了吗?这次代码运行得非常好!!你真的救了我的命,伙计:)太谢谢你了!!我试过你的代码,发现它也很好用。我爱你们!英雄联盟
private void MyTextBlock_Tap(object sender, GestureEventArgs e)
{
var elem = (FrameworkElement)sender;
var myTextBlock = (TextBlock)elem.FindName("MyTextBlock");
var myTextBox = (TextBox)elem.FindName("MyTextBox");
myTextBlock.Visibility = Visibility.Collapsed;
myTextBox.Visibility = Visibility.Visible;
}
<ListBox Name="lst" >
<ListBox.ItemTemplate>
<DataTemplate>
<Canvas Width="460" Height="60" Background="{StaticResource PhoneAccentBrush}" Tap="Canvas_Tap">
<TextBlock Text="{Binding}" FontSize="30" Margin="10,10,10,10"/>
<TextBox Height="60" Width="460" Visibility="Collapsed" Text="text"/>
</Canvas>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
private void Canvas_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
var m = (sender as Canvas).Children;
foreach (UIElement x in m)
{
if ((x as TextBlock) != null)
(x as TextBlock).Visibility = Visibility.Collapsed;
if ((x as TextBox) != null)
(x as TextBox).Visibility = Visibility.Visible;
}
}