2

我得到了一个包含类型列表的依赖属性的用户控件(它位于库中/也尝试使用普通属性)。

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 的设置对此没有任何改变。我忽略了什么吗?

4

2 回答 2

0

你看过输出窗口吗?通常,如果绑定静默失败,您会在其中看到一些错误。

您需要检查传递给 PicSelection 控件的数据上下文是什么。您可以尝试显式设置数据上下文,然后直接绑定到 Images 属性吗?

LstImages="{Binding Path=Images}"
于 2013-11-01T12:09:30.467 回答
0

如果实例DataDataContext您的,UserControl那么您需要更新您的Bindingas

<controls:PicSelection Name="SelPic" LstImages="{Binding Images}" Foreground="White" FontSize="16"/>
于 2013-11-01T12:12:08.587 回答