Windows phone 7 当文本块';受约束

Windows phone 7 当文本块';受约束,windows-phone-7,binding,textblock,Windows Phone 7,Binding,Textblock,我正在为WP7开发一个应用程序,但我有一个小问题: <TextBlock Name="rName" Text="{Binding LineOne2}" TextWrapping="NoWrap" Style="{StaticResource PhoneTextExtraLargeStyle}" /> 我还绑定了XML文件中的数据 我需要使用文本框“rName”获取值,并使用它对xml文件执行linq查询,从该x

我正在为WP7开发一个应用程序,但我有一个小问题:

<TextBlock Name="rName" 
           Text="{Binding LineOne2}" 
           TextWrapping="NoWrap" 
           Style="{StaticResource PhoneTextExtraLargeStyle}" />
我还绑定了XML文件中的数据

我需要使用文本框“rName”获取值,并使用它对xml文件执行linq查询,从该xml文件中获取地址a和电话号码,并将它们绑定到另一页的文本框。

如果要绑定,则不应直接访问文本块。但是,如果您愿意,可以执行以下操作:

XAML 无论哪种方式都可以,但是您应该直接访问LineOne2

如果您正在绑定,则不应该直接访问TextBlock。但是,如果您愿意,可以执行以下操作:

XAML
这两种方法都可以,但您应该直接访问LineOne2,有两种方法。一是使用全局变量。基本上,您在app.xaml.cs文件中声明了一个公共变量,现在您可以在任何页面上访问它。第二种方法是将其作为参数传递到页面的uri中

有关更多信息,请查看上的此页面


更新:如果需要访问textblock的值,也有两种方法。将全局变量或参数设置为viewmodel中绑定到的属性,或者如果使用代码隐藏,则将其设置为textblock的Text属性。

有两种方法。一是使用全局变量。基本上,您在app.xaml.cs文件中声明了一个公共变量,现在您可以在任何页面上访问它。第二种方法是将其作为参数传递到页面的uri中

有关更多信息,请查看上的此页面


更新:如果需要访问textblock的值,也有两种方法。将全局变量或参数设置为viewmodel中绑定到的属性,或者如果使用代码隐藏,则将其设置为textblock的Text属性。

无法按名称访问
textblock
的原因是它是
列表框的一部分

想想看,
ListBox
的项目数量将与
Items1
集合中的元素数量一样多,因此,如果您按名称访问它,如何指定所引用的
TextBlock

有两种不同的方法可以解决这个问题。一种方法是将当前点击的项目保存在
featuredPanel\u Tap
处理程序中。将此行添加到处理程序:

var currentItem = ((sender as StackPanel).DataContext) as MyItemType;
MyItemType
Items1
集合中包含的对象类型。然后您可以通过
currentItem.LineOne1
currentItem.LineTwo1
访问文本


另一种方法是为
ListBox
SelectedItem
SelectedIndex
属性创建
TwoWay
绑定。当用户点击
列表框
项目时,绑定项目将自动更新为
项目1
中的正确对象。

无法按名称访问
文本块
的原因是它是
列表框
项目模板
的一部分

想想看,
ListBox
的项目数量将与
Items1
集合中的元素数量一样多,因此,如果您按名称访问它,如何指定所引用的
TextBlock

有两种不同的方法可以解决这个问题。一种方法是将当前点击的项目保存在
featuredPanel\u Tap
处理程序中。将此行添加到处理程序:

var currentItem = ((sender as StackPanel).DataContext) as MyItemType;
MyItemType
Items1
集合中包含的对象类型。然后您可以通过
currentItem.LineOne1
currentItem.LineTwo1
访问文本


另一种方法是为
ListBox
SelectedItem
SelectedIndex
属性创建
TwoWay
绑定。当用户点击
ListBox
项时,绑定项将自动更新为
Items1
中的正确对象。

因为
TextBlock.Text
属性绑定到
LineOne2
上,其值应为
LineOne2
设置的值。因此,不要使用
rName.Text
而是读取
LineOne2
变量的值。如果这不起作用,您需要在
文本块
周围发布一些额外的XAML,例如,如果它是
列表框
项目模板
的一部分,您需要显示它。文本块是堆栈面板的一部分,堆栈面板是列表框的一部分。我正在从xml添加数据。因为
TextBlock.Text
属性绑定到
LineOne2
它的值应该是
LineOne2
设置的值。因此,不要使用
rName.Text
而是读取
LineOne2
变量的值。如果这不起作用,您需要在
文本块
周围发布一些额外的XAML,例如,如果它是
列表框
项目模板
的一部分,您需要显示它。文本块是堆栈面板的一部分,堆栈面板是列表框的一部分。我从xml中添加数据。不需要双向绑定,它是一个
TextBlock
,而不是
TextBox
,我把它放在那里,以防他通过名称抛出可能会改变它的东西。我需要按你的方式做,我本来打算这么做的,但它不起作用。我不能使用rName。@user1200204为什么不能呢?也许你可以在你尝试过的东西上发布一些C代码?我也这么做了,我无法访问它们不知道:(不需要双向绑定,它是一个
TextBlock
,不是一个
TextBox
,我把它扔进去了,以防他通过名称抛出可能会改变它的东西。我需要做一个方法
string text = rName.Text;
string text = LineOne2;
var currentItem = ((sender as StackPanel).DataContext) as MyItemType;