首先,當我要補充一點,我是新的Windows Phone的開發,這樣下去容易對我:-)ArgumentException的一個列表框綁定到一個ObservableCollection
我想一個列表框綁定到一個ObservableCollection < LinkElement>其中每個LinkElement由名爲Tile的UserControl表示。到目前爲止,代碼的工作原理是,我在我的ObservableCollection中獲得了很多Tile:s(我已經簡化了一些代碼,現在只有一個LinkElement)。
XAML:
<!--ContentPanel - place additional content here-->
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="10,10,10,10">
<ScrollViewer Name="linkScrollViewer">
<ListBox Name="linkList" Margin="26,0,26,0" Height="380" >
<ListBox.ItemTemplate>
<DataTemplate>
<Controls:Tile>
<toolkit:ContextMenuService.ContextMenu>
<toolkit:ContextMenu Name="ContextMenu" >
<toolkit:MenuItem Name="Edit" Header="Edit" Click="EditItem_Click"/>
<toolkit:MenuItem Name="Delete" Header="Delete" Click="DeleteItem_Click"/>
</toolkit:ContextMenu>
</toolkit:ContextMenuService.ContextMenu>
</Controls:Tile>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</ScrollViewer>
</Grid>
我設置通過代碼綁定源:我對綁定(即現在並沒有做太多)
linkList.ItemsSource = LinkProjection.List;
和收集:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SoftTeam.SoftLink
{
public class LinkProjection
{
private Links _links;
public ObservableCollection<LinkElement> List = new ObservableCollection<LinkElement>();
public LinkProjection(Links links)
{
_links = links;
}
public void Refresh()
{
List.Clear();
var element = new LinkElement();
element.Name = "Button1";
element.Header = "Media";
element.Height = 200;
element.Width = 480;
element.IsLink = false;
element.Tag = null;
element.URL = "";
List.Add(element);
}
}
public class LinkElement
{
public string Name;
public string Header;
public string URL;
public double Height;
public double Width;
public bool IsLink;
public object Tag;
}
}
問題是當我嘗試將Tile控件的屬性綁定到LinkElement類的屬性時,我得到一個System.ArgumentException「值不在預期範圍內」。由於在我的代碼中沒有出現這個問題,所以這個例外並沒有給我提示問題出在哪裏。
也就是說,當我在XAML改變
<Controls:Tile> // This works!
到例如
<Controls:Tile TileHeader="{Binding Path=Header}"> // This crashes
或
<Controls:Tile Name="{Binding Path=Name}"> // This crashes too
發生的異常。不管我綁定哪個屬性,它都會給出一個異常。沒有綁定屬性,代碼工作正常。
我想我的問題是:爲什麼?
我認爲你應該在實現'INotifyPropertyChanged'接口的Model類中使用這些屬性。然後你可以將這些屬性綁定到XAML控件。檢查此鏈接獲取更多信息[鏈接](http://developer.nokia.com/community/wiki/Data_Binding_to_controls_on_Windows_Phone) – vasuy19
我向LinkElement-class添加了INotifyPropertyChanged,並在您發送的鏈接中實現了它,但現在我得到一個NullReferenceException: 在System.Windows.ni.dll中發生類型'System.NullReferenceException'的第一次機會異常 附加信息:未將對象引用設置爲對象的實例。 – Hultan
我正在調查,現在,不知道如果這與我原來的問題有什麼關係... – Hultan