2
我嘗試編寫導航模型的多重綁定轉換器,當我從兩個列表框中選擇任何listboxitem時,我將頁面加載到框架中。同時,我需要能夠使用導航類中的「後退/前進」按鈕進行導航,並且如果將其UriSource加載到框架中,就能夠將ListBoxitem顯示爲選定狀態。我擁有的轉換器可以從框架中的兩個源列表框中更新urisources,但不能在選定狀態下切換listboxitem。我在轉換器的ConvertBack部分將listboxitem切換到選定狀態。我做錯了什麼,我總是在一個建造中遇到錯誤。請讓我知道是否有可能實現我想要做的事情。先謝謝你。下面多功能轉換器?
的是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>
謝謝你看我的帖子。這是我很難做到正確。我想知道你是否有機會展示它將如何在代碼行中。我試圖用它玩足夠長的時間,仍然停留在這裏。 – vladc77 2010-10-23 17:24:30
我修改了代碼,但仍然有問題來運行它。請看上面的代碼。我改變了轉換器。 – vladc77 2010-10-23 17:34:18
要將值返回給SelectedValue屬性,您需要從ConvertBack返回一個2元素數組,其值按照Bindings的順序。如果你想爲它們設置相同的值,它可能是這樣的:return new object [] {uriString,uriString};您還需要在綁定上設置Mode =「TwoWay」。 – 2010-10-24 13:38:12