我的Windows Phone 8应用程序中存在longlistselector的问题。 从longlistselector中选择和编辑记录并将更改提交到本地数据库后,longlistselector不会显示更新的名称,除非您关闭并重新打开该应用程序。数据肯定正在更新,它只是没有显示。有没有办法在应用程序仍处于打开状态时选择列表?这是列表中的Xaml:
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<phone:LongListSelector x:Name="llsModules"
Margin="0,0,-12,0"
ItemsSource="{Binding Modules}"
SelectionChanged="llsModules_SelectionChanged">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0,0,0,17">
<StackPanel Orientation="Horizontal">
<Grid HorizontalAlignment="Stretch" Width="420" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="100"/>
<ColumnDefinition Width="100"/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding Name,StringFormat='Name: {0}'}"
TextWrapping="Wrap"
MaxWidth="300"
Style="{StaticResource PhoneTextLargeStyle}"
HorizontalAlignment="Left"
Grid.Row="1"
/>
</Grid>
</StackPanel>
这就是背后的代码。
public ModulePage()
{
InitializeComponent();
DataContext = App.ViewModel;
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
App.ViewModel.LoadModulesData();
llsModules.ItemsSource = App.ViewModel.Module;
}
private void llsModules_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (llsModules.SelectedItem == null)
return;
NavigationService.Navigate(new Uri("/ModuleDetails.xaml?moduleid=" + (llsModules.SelectedItem as Modules).Id, UriKind.Relative));
}
这是数据模型
[Table(Name = "Modules")]
public class Modules : INotifyPropertyChanged, INotifyPropertyChanging
{
public Modules()
{
}
private int _id;
[Column(IsPrimaryKey = true, IsDbGenerated = true, DbType = "INT NOT NULL Identity", CanBeNull = false, AutoSync = AutoSync.OnInsert)]
public int Id
{
get
{
return _id;
}
set
{
if (_id != value)
{
NotifyPropertyChanging("Id");
_id = value;
NotifyPropertyChanged("Id");
}
}
}
private string _name;
[Column(DbType = "nvarchar(255)", CanBeNull = false)]
public string Name
{
get
{
return _name;
}
set
{
if (value == "")
throw new Exception("Module Name is a required field");
if (_name != value)
{
NotifyPropertyChanging("Name");
_name = value;
NotifyPropertyChanged("Name");
}
}
}
非常感谢!
答案 0 :(得分:0)
在Xaml中,更改用于将名称显示为TwoWay
的绑定。
Text="{Binding Name, Mode=TwoWay, StringFormat='Name: {0}'}"
这让xaml知道监视Name
属性的InotifyPropertyChanges。