2011-01-18 35 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一旦列表框已經加載其列表。

相關問題