我正在为WP7开发应用程序,但我遇到了这个小问题:
<TextBlock Name="rName"
Text="{Binding LineOne2}"
TextWrapping="NoWrap"
Style="{StaticResource PhoneTextExtraLargeStyle}" />
我对Textblock
有LineOne2
绑定,我设置了一个点击事件,以便在点击时启动另一个页面。
问题是,当我尝试获取该文本rName.Text
的值时,它会显示其不可用。
所以我徘徊是否有任何可能的方法来获取TextBlock
的值,将其用作另一页中方法的参数,即使它是绑定的?或者还有其他方法吗?
我的列表包含2个文本框和堆叠面板中的图像....我需要按下该文本框,打开一个新页面,其中包含该页面值中该文本框的值,并作为方法的参数。
编辑:
<ListBox ItemsSource="{Binding Items1}"
Margin="14,149,8,8"
Foreground="#FF7A0100"
Grid.RowSpan="2">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Name="featuredPanel"
Orientation="Horizontal"
Margin="0,0,0,17"
Height="105"
Width="432"
Tap="featuredPanel_Tap">
<!--Replace rectangle with image-->
<Image Height="100"
Width="100"
Source="{Binding ImagePath1}">
</Image>
<StackPanel Width="311">
<TextBlock x:Name="rName"
Text="{Binding LineOne1}"
TextWrapping="NoWrap"
Style="{StaticResource PhoneTextExtraLargeStyle}" />
<TextBlock Text="{Binding LineTwo1}"
TextWrapping="Wrap"
Margin="12,-6,12,0"
Style="{StaticResource PhoneTextSubtleStyle}" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
此外,我正在绑定XML文件中的数据。
我需要使用TextBox“rName”来获取值并使用它在xml文件上执行linq查询以从该XML文件获取地址和电话号码并将它们绑定到另一页面中的文本框。
答案 0 :(得分:3)
您无法按名称访问TextBlock
的原因是因为它是ListBox
的{{1}}的一部分。
考虑一下,ItemTemplate
将包含与ListBox
集合中的元素一样多的项目,因此如何指定您所指的Items1
你是按姓名访问的吗?
有几种不同的方法可以解决这个问题。一种方法是将当前点击的项目保存在TextBlock
处理程序中。将此行添加到处理程序:
featuredPanel_Tap
var currentItem = ((sender as StackPanel).DataContext) as MyItemType;
是MyItemType
集合中包含的对象类型。然后,您可以Items1
或currentItem.LineOne1
。
另一种方法是为currentItem.LineTwo1
的{{1}}或TwoWay
属性创建ListBox
绑定。当用户点击SelectedItem
项时,绑定项将自动更新为SelectedIndex
内的正确对象。
答案 1 :(得分:1)
如果您有约束力,不应直接访问TextBlock。但是,如果您愿意,可以执行以下操作:
<TextBlock x:Name="rName" Text="{Binding LineOne2, Mode=TwoWay}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextExtraLargeStyle}" />
string text = rName.Text;
string text = LineOne2;
任何一种方式都应该有效,但你应该直接访问LineOne2
答案 2 :(得分:0)
有两种方法可以做到这一点。一个是你使用全局变量。基本上,您在app.xaml.cs文件中声明了一个公共变量,现在您可以在任何页面上访问它。第二种方法是将其作为页面uri中的参数传递。
在App Hub上查看此页面以获取更多信息。
更新:如果您需要访问文本块的值,还有两种方法可以执行此操作。将全局变量或参数设置为等于视图模型中绑定的属性,或者使用后面的代码将其设置为文本块的Text属性。