2011-01-18 33 views
0

在我的应用程序中,我有一个保存/编辑页面。 当前流程如下:用户有一个主页面,并带有元素列表。他可以点击“添加”按钮,进入“添加”页面,在该页面中可以输入信息并存储。一旦他完成了,信息就会保存并显示在列表中。 如果他在列表中单击,他将转到“编辑”页面,在其中他可以更改信息。在编辑页面的列表框中选择“旧值”

实际上,“添加”和“编辑”页面是相同的,第二个页面填充字段,而第一个没有。

我在这个页面有3个列表框,一个用于严重性,一个用于分类,一个用于记者。保存前在列表框中选择此信息,在编辑阶段应自动选择此信息,以便用户知道“旧”值。 要自动选择的值,我试过两种方法:

1,在我的XAML:

<ListBox Height="103" Name="lbSeverities" Width="439" HorizontalAlignment="Left" Margin="20,0,0,0" SelectionMode="Single" ItemsSource="{Binding Severities}" DisplayMemberPath="Name" SelectedItem="{Binding Task.Severity}"/> 

而且我也覆盖严重性类的Equals方法,以一个合理的实现。

2。在我的XAML

<ListBox Height="103" Name="lbSeverities" Width="439" HorizontalAlignment="Left" Margin="20,0,0,0" SelectionMode="Single" ItemsSource="{Binding Severities}" DisplayMemberPath="Name" SelectedIndex="{Binding Task.Severity, Converter={StaticResource SeverityToIndexConverter}}"/> 

,我创建了这个代码SeverityToIndexConverter:

public class SeverityToIndexConverter : IValueConverter 
    { 

     public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      if (value != null && value is Severity) 
      { 
       Severity currentSeverity = (Severity)value; 
       for (int i = 0; i < (App.Current as App).MainViewModel.Severities.Count; i++) 
       { 
        Severity sev = (App.Current as App).MainViewModel.Severities[i]; 
        if (currentSeverity.ID == sev.ID) 
         return i; 
       } 
      } 
      return -1; 
     } 

     public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
     { 
      throw new NotImplementedException(); 
     } 

他们都给出了相同的结果:有时候值会自动选择,但有时不。选择时非常不稳定。 我想像了一些例外,试图抓住它,但我什么都没有得到。 我也试过调试,我注意到在情况1中,所有成员的集合并行调用equals方法,所以我尝试了第二种方法。调试没有让我得到任何答案。

有没有人遇到类似的情况? 如何在用户进入“编辑”页面时选择列表框值?

感谢, 奥斯卡

回答

1

我做同样的事情。我的xaml看起来像你的第一个例子。

这里就是我想要做的:

创建一个名为严重性新的属性。在getter返回Task.Severity。将列表框SelectedItem绑定到新属性。

它也可能是一个计时的事情,所以你可能不得不在新的属性上调用NotifyPropertyChanged一旦列表框已经加载其列表。

相关问题