Я пытаюсь написать мультисвязывающий конвертер для модели навигации, где я загружаю страницы в фрейм, когда любой элемент списка выбирается из двух списков. В то же время мне нужно иметь возможность перемещаться с помощью кнопок «Назад» и «Вперед» из класса навигации и иметь возможность отображать элемент списка в выбранном состоянии, если его UriSource загружен в кадр. Укрыватель, который у меня есть, может обновить источники из двух списков источников в рамке, но не может переключить элемент списка в выбранном состоянии. Я переключаю listboxitem в выбранное состояние на ConvertBack части конвертера. Я сделал что-то не так, я всегда получаю ошибки на встроенном. Пожалуйста, дайте мне знать, если возможно достичь того, что я пытаюсь сделать. Заранее спасибо.
Ниже приведен код MultiBindConverter:
public class MultiBindConverter : IMultiValueConverter
{
#region IMultiValueConverter Members
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values[0] != null)
{
if (values[1] != null)
{
return new Uri(values[1].ToString(), UriKind.RelativeOrAbsolute);
}
return new Uri(values[0].ToString(), UriKind.RelativeOrAbsolute);
}
return null;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
if (value != null)
{
var uri = (Uri)value;
var uriString = uri.OriginalString;
if (uri.OriginalString.Contains(";component/"))
{
uriString = uriString.Substring(uriString.IndexOf("/") + 1);
}
return new object[] { uriString, uriString };
}
}
}
XAML:
<Frame Grid.Column="2" x:Name="ContentFrame" JournalOwnership="OwnsJournal" NavigationUIVisibility="Visible">
<Frame.Source>
<MultiBinding Converter="{StaticResource MultiBindConverter}">
<Binding Path="SelectedValue" ElementName="Nav_ListBox"/>
<Binding Path="SelectedValue" ElementName="SublevelListbox"/>
</MultiBinding>
</Frame.Source>
</Frame>