내 앱에는 저장/편집 페이지가 있습니다. 현재 흐름은 다음과 같습니다 : 사용자는 요소 목록과 함께 메인 페이지를 가지고 있습니다. 그는 "추가"버튼을 클릭 할 수 있으며 정보를 입력하고 저장할 수있는 "추가"페이지로 이동합니다. 그가 그것을하면 정보가 저장되고 목록에 표시됩니다. 그는 목록에서 클릭하면 정보를 변경할 수있는 "편집"페이지로 이동합니다.편집 페이지의 목록 상자에서 "이전 값"을 선택하십시오.
사실 추가 및 편집 페이지는 동일하며 두 번째 필드는 채워진 필드가 있지만 첫 번째 필드에는 채워지지 않습니다.
나는이 페이지에 3 개의 목록 상자를 가지고 있는데, 하나는 심각도, 하나는 범주 및 하나는 리포터입니다. 이 정보는 저장하기 전에 목록 상자에서 선택되며 편집 단계에서 사용자가 "이전"값을 알 수 있도록 자동으로 선택되어야합니다.
내 XAML 1에서 :
<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 메서드를 오버라이드 (override) 나는 두 가지 방법을 시도, 자동으로 값을 선택합니다.
내 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}}"/>
에서 2 그리고 나는이 코드를 사용하여 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 메서드가 컬렉션의 모든 멤버에 대해 병렬로 호출되므로 두 번째 방법을 시도했습니다. 디버깅을해도 아무런 답을 얻지 못했습니다.
비슷한 상황에 직면 한 사람이 있습니까? 사용자가 "편집"페이지에 들어갈 때 목록 상자 값을 선택하도록하려면 어떻게해야합니까?
덕분에, 오스카