【发布时间】:2011-06-12 15:25:47
【问题描述】:
尝试了几个小时后,我对 wpf 复杂的数据绑定概念感到非常困惑:-/
在几个文本框中显示我的业务对象(例如名称、街道...)的属性的最简单方法是什么?
目标是:
- 用户可以浏览记录(下一个、上一个)
- 双向绑定 - 文本框的更改也应更改基础属性的值。
我已经想出了如何将框绑定到属性,但是如何实现到下一条/上一条记录的导航?
提前致谢!
【问题讨论】:
标签: c# wpf data-binding textbox
尝试了几个小时后,我对 wpf 复杂的数据绑定概念感到非常困惑:-/
在几个文本框中显示我的业务对象(例如名称、街道...)的属性的最简单方法是什么?
目标是:
我已经想出了如何将框绑定到属性,但是如何实现到下一条/上一条记录的导航?
提前致谢!
【问题讨论】:
标签: c# wpf data-binding textbox
您需要查看 ICollectionView 方法。 这是一个工作示例:
xaml:
<Window.Resources>
<x:Array x:Key="myPeoples" Type="{x:Type local:Person}">
<local:Person Name="Bob Marley" Address="123 street" />
<local:Person Name="Ted Nugent" Address="456 street" />
<local:Person Name="Ron Paul" Address="789 street" />
</x:Array>
</Window.Resources>
<DockPanel>
<StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal">
<Button x:Name="cmdPrevious" Click="cmdPrevious_Click">Previous</Button>
<Button x:Name="cmdNext" Click="cmdNext_Click">Next</Button>
</StackPanel>
<Grid DockPanel.Dock="Top" DataContext="{StaticResource myPeoples}">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<TextBox Grid.Column="0" Text="{Binding Path=Name}" />
<TextBox Grid.Column="1" Text="{Binding Path=Address}" />
</Grid>
</DockPanel>
后面的代码:
private void cmdPrevious_Click(object sender, RoutedEventArgs e)
{
Person[] peoples = this.FindResource("myPeoples") as Person[];
System.ComponentModel.ICollectionView collectionView = CollectionViewSource.GetDefaultView(peoples);
collectionView.MoveCurrentToPrevious();
}
private void cmdNext_Click(object sender, RoutedEventArgs e)
{
Person[] peoples = this.FindResource("myPeoples") as Person[];
System.ComponentModel.ICollectionView collectionView = CollectionViewSource.GetDefaultView(peoples);
collectionView.MoveCurrentToNext();
}
【讨论】: