我有一个包含typ列表的依赖属性的usercontrol(它位于库中/也尝试使用普通属性)。
public partial class PicSelection : UserControl
{
#region Properties
public static readonly DependencyProperty LstImagesProperty = DependencyProperty.Register("LstImages", typeof(List<string>), typeof(PicSelection), new FrameworkPropertyMetadata(null));
// .NET Property wrapper
public List<string> LstImages
{
get { return (List<string>)GetValue(LstImagesProperty); }
set { SetValue(LstImagesProperty, value); }
}
#endregion
...
我还有一个DataClass:
public class Data : BaseObject
{
#region Members
public List<string> Images { set { SetValue("Images", value); } get { return (GetValue<List<string>>("Images")); } }
#endregion
#region Construction
public GameData()
{
Images = new List<string>();
Images.Add("pack://application:,,,/TestApp;component/Content/Images/Pictures/0002.jpg");
}
#endregion
}
基础对象用于自动创建依赖属性:
[Serializable]
public abstract class BaseObject : PropertyNotifier
{
#region Members
private readonly IDictionary<string, object> _values = new Dictionary<string, object>(StringComparer.CurrentCultureIgnoreCase);
#endregion
现在我想将Data.Images绑定到customcontrol.LstImages(“Data”是页面上typ Data的属性,使用控件)。该程序无一例外地工作,但不知何故,控件中的LstImages,我在几个事件上检查过,总是为空。
<controls:PicSelection Name="SelPic" LstImages="{Binding Data.Images}" Foreground="White" FontSize="16"/>
另一方面,使用静态类(与组织相关的几乎相同)执行相同的操作
<usercontrol SomeArray="{x:Static data:StaticClass.TheStrings}"/>
很简单。它甚至适用于普通属性。对此,Datacontext的设置不会改变。我忽略了什么吗?
答案 0 :(得分:0)
你看过输出窗口了吗?通常,如果绑定失败,您将看到一些错误。
您需要检查传递到PicSelection控件的数据上下文是什么。您可以尝试显式设置数据上下文,然后直接绑定到Images属性吗?
LstImages="{Binding Path=Images}"
答案 1 :(得分:0)
如果Data
的实例是DataContext
的{{1}},那么您需要将UserControl
更新为
Binding