我正在尝试编写一个多绑定转换器,用于导航模型,在两个列表框中选择任何一个列表框项时,将页面加载到框架中。同时,我需要能够从导航类使用前进/后退按钮进行导航,并能够显示列表框项的选定状态,如果其UriSource已加载到框架中。我拥有的转换器可以从框架中的两个源-列表框更新urisources,但无法切换列表框项的选定状态。我在转换器的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>