Windows phone 7 当文本块';受约束
我正在为WP7开发一个应用程序,但我有一个小问题: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
<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;