首先,我应该补充一点,我是Windows Phone开发的新手,所以对我很轻松: - )
我想将ListBox绑定到ObservableCollection< LinkElement>其中每个LinkElement由名为Tile的UserControl表示。到目前为止代码工作,我得到尽可能多的Tile:s,因为我在我的ObservableCollection中有了LinkElement:我已经简化了下面的代码,现在只有一个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“值不在预期范围内。”。该例外没有给出任何关于问题所在的提示,因为它没有出现在我的代码中。
也就是说,当我改变
时<Controls:Tile> // This works!
例如,在XAML中
<Controls:Tile TileHeader="{Binding Path=Header}"> // This crashes
或
<Controls:Tile Name="{Binding Path=Name}"> // This crashes too
发生异常。我绑定哪个属性并不重要,它给出了一个例外。没有属性绑定,代码工作正常。
我想我的问题是:为什么?
答案 0 :(得分:0)
我终于在这篇文章中找到了答案:
Binding properties of User Control in Windows Phone Application
问题是我的UserControl在另一个项目/程序集中,因此我需要为我的控件创建Dependency Proeperties。