C# 使用ListBox在Windows Phone 8应用程序中进行数据绑定
这是我的密码。它在做什么。我有一个文本框(按钮)与教科书的名称,当我点击它,我可以改变文本框中的文字使用绑定。但现在我为作者姓名添加了另一个文本框,我不知道如何绑定它。若我使用和书名相同的方法,那个么它不起作用,或者书名中的文本也在书作者中。通过弹出式设置页面更改所有文本 我的来源在这里:。 图片如下:C# 使用ListBox在Windows Phone 8应用程序中进行数据绑定,c#,windows-phone-7,data-binding,binding,C#,Windows Phone 7,Data Binding,Binding,这是我的密码。它在做什么。我有一个文本框(按钮)与教科书的名称,当我点击它,我可以改变文本框中的文字使用绑定。但现在我为作者姓名添加了另一个文本框,我不知道如何绑定它。若我使用和书名相同的方法,那个么它不起作用,或者书名中的文本也在书作者中。通过弹出式设置页面更改所有文本 我的来源在这里:。 图片如下: public分部类主页面:INotifyPropertyChanged { 私有ObservableCollection _books=新ObservableCollection(); 公共可观
public分部类主页面:INotifyPropertyChanged
{
私有ObservableCollection _books=新ObservableCollection();
公共可观察收集所有书籍
{
获取{return\u books;}
设置{u books=value;}
}
...
private void InitializeData()
{
var bookName1=新书{Id=1,BookName=“小红苹果”,AuthorName=“丹尼尔”};
...
添加(书名1);
...
不动产变更(“所有账簿”);
}
公共事件属性更改事件处理程序属性更改;
公共void OnPropertyChanged(字符串propertyName)
{
if(PropertyChanged!=null)
{
PropertyChanged(空,新PropertyChangedEventArgs(propertyName));
}
}
私有void btnGreenBook\u单击(对象发送者,路由目标e)
{
var按钮=发送方为按钮;
如果(按钮!=null)
{
Popup Popup=新的Popup();
popup.VerticalOffset=30;
PopupSettingPage控件=新建PopupSettingPage();
popup.Child=控件;
popup.IsOpen=true;
control.btnSave.Click+=(s,args)=>
{
var id=Convert.ToInt32(button.Tag);
var book=AllBooks.FirstOrDefault(sub=>sub.Id==Id);
if(book!=null)
{
book.BookName=control.BookName;
账面上的不动产变更(“账面名称”);
}
popup.IsOpen=false;
};
...
哦,亲爱的,这是一个简单的错误:)
您忘记在PopupSettingsPage.Xaml的Xaml中添加AuthorName
<TextBox x:Name="tbInputAuthorName" Text="{Binding AuthorName, Mode=TwoWay}" VerticalAlignment="Center"/>
基于您的评论的其他答案:
为了实现这一点,您必须删除列表框中的第二个stackpanel。相反,请使用WrapPanel控件。搜索如何使用WrapPanel for WindowsPhone
然后你必须找到一些方法将背景设置为红色或绿色。祝你好运好的,我使用了包裹面板,但问题仍然存在。我有两个全景项目(我发布了项目1和项目2的代码,只有第二个全景页面上显示了相同的代码)问题仍然是,如果我将一些值保存到panorama项目1中的一个项目中,这个值在panorama项目2中太大了,我不知道怎么做。逻辑是单击panorama 1项目更改panorama 1项目中的值,单击panorama 2项目更改panorama 2项目值。它看起来像panoram项目1与panoram项目2具有相同的ID。这是完整资源e:
ok thx man现在一切正常。我是初学者,找不到绑定更多项目的好教程。我想问你,也许你会知道问题出在哪里,为什么我有相同的值(文本)在红色和绿色按钮中?您正在将redbox和greenbox的数据绑定设置为Xaml中相同的书名和AuthorName。您在那里的预期行为是什么?我希望红色框中有不同的文本,绿色框中有不同的文本。例如,我单击弹出窗口中的红色框,设置名称和作者,然后保存和设置值仅显示在红色框中。与绿色框相同,绿色框中保存的所有值应仅显示在绿色框中。现在,绿色框中的值相同,红色框中的值相同。问题已修复。我使用新名称创建了另一个全景项目。
<TextBox x:Name="tbInputAuthorName" Text="{Binding AuthorName, Mode=TwoWay}" VerticalAlignment="Center"/>
book.BookName = control.BookName;
book.OnPropertyChanged("BookName");
book.AuthorName = control.AuthorName;
book.OnPropertyChanged("AuthorName");
<Grid x:Name="LayoutRoot" Background="Transparent">
<!--Panorama control-->
<phone:Panorama>
<!--Panorama item 1-->
<phone:PanoramaItem Header="Test">
<Grid x:Name="PanelPanoramaItem1"
Grid.Row="1"
Margin="25,0,12,0">
<ListBox ItemsSource="{Binding AllBooks}">
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<toolkit:WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBox.ItemTemplate>
<DataTemplate>
<Button Width="140"
Height="140"
toolkit:TiltEffect.IsTiltEnabled="True" Margin="0,0,0,5" Click="Button_Click_1" Tag="{Binding Id}" >
<Button.Template>
<ControlTemplate>
<Grid Background="Chartreuse">
<TextBlock Foreground="Black" Text="{Binding BookName}" />
</Grid>
</ControlTemplate>
</Button.Template>
</Button>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
</phone:PanoramaItem>
<!-- END Panorama item 1 -->