タブ付きのブラウザコードサンプルを作成しようとしていますが、ソリューションを正しく実装するのに問題があります。BrowserItem
カスタムWebブラウザとURL文字列の2つの値を持つカスタムクラスを作成しました。次に、タイプBrowserItemのObservableCollectionを作成しました。ここで、クリックイベントでObservableCollectionに新しいアイテムを追加します。ただし、何らかの理由ShowTab
で、MainPageでメソッドを呼び出してユーザーが(ObservableCollectionによって入力されたListBoxから)選択したWebブラウザーインスタンスを表示すると、ArgumentOutOfRange例外が発生します。説明のために、私がこれまでに持っているものは次のとおりです。
BrowserItem.cs
public FullWebBrowser browser
{
get;
set;
}
public string url
{
get;
set;
}
Settings.cs
public static Setting<ObservableCollection<BrowserItem>> Browsers = new Setting<ObservableCollection<BrowserItem>>("Browsers", new ObservableCollection<BrowserItem>());
上記のSettingクラスは、分離されたストレージからObservableCollectionを保存および取得します。
MainPage.xaml.cs
private void ShowTab(int index)
{
this.currentIndex = index;
//Settings.Browsers.Value.ElementAt(currentIndex); //ArgumentOutOfRange exception
int count = Settings.Browsers.Value.Count;
if (count <= 0)
{
FullWebBrowser browser = new FullWebBrowser();
browser.InitialUri = "http://www.bing.com";
BrowserItem Browser = new BrowserItem();
Browser.browser = browser;
Browser.url = browser.InitialUri;
Settings.Browsers.Value.Add(Browser);
BrowserHost.Children.Add(Browser.browser);
}
//SearchBar.Text = Settings.Browsers.Value.ElementAt(currentIndex).url ?? "";
if (Settings.Browsers.Value.ElementAt(currentIndex) == null) //ArgumentOutOfRangeException
{
FullWebBrowser browser = new FullWebBrowser();
browser.InitialUri = "http://www.bing.com";
BrowserItem Browser = new BrowserItem();
Browser.browser = browser;
Browser.url = browser.InitialUri;
Settings.Browsers.Value.Add(Browser);
BrowserHost.Children.Add(Browser.browser);
}
for (int i = 0; i < Settings.Browsers.Value.Count; i++)
{
if (Settings.Browsers.Value.ElementAt(i) != null)
{
Settings.Browsers.Value.ElementAt(i).browser.Visibility = i == this.currentIndex ? Visibility.Visible : Visibility.Collapsed;
}
}
}
ArgumentOutOfRangeExceptionSettings.Browsers.Value.ElementAt(currentIndex);
は、ShowTab
メソッド内で最初に発生し、他のすべての場所で同じステートメントが含まれています。MainPageのObservableCollectionに対応するインデックス値のウェブブラウザを表示したいと思います。