当前位置:  开发笔记 > 编程语言 > 正文

在Silverlight/WPF中绑定复杂属性

如何解决《在Silverlight/WPF中绑定复杂属性》经验,为你挑选了1个好方法。

假设我有一个自定义数据类型,如下所示:

public class MyDataType
{
  public string SimpleProp1;
  public string SimpleProp2;
  public List ComplexProp;
}

现在我有一个动态创建的数据绑定控件(即ItemsControl或DataGrid).如何在xaml代码中定义的绑定看起来像访问复杂属性的子属性?我认为应该看起来像这样:


要么


但是这两个都给了我xml解析错误.它应该如何看起来正确?是否有可能以某种方式引用集合属性的特定项目?如果不是,我还有其他选择吗?

编辑,这个场景似乎不够清晰:

我有一个

IEnumberable

绑定到ItemsControl,在DataTemplate内部我有多个TextBox,需要引用复杂属性List中对象的子属性.



1> sipwiz..:

看起来像属性路径中的Silverlight 索引器中的 poperty路径索引器被破坏了.绕过它的方法是在帖子中建议并使用IValueConverter.

XAML


     
       
        
    
        
    

C#Page.xaml.cs

namespace Silverlight.Mine
{
    public partial class Page : UserControl
    {
        private SomeType m_mySomeType = new SomeType();

        public Page()
        {
            InitializeComponent();
            myTextBlock.DataContext = m_mySomeType;
        }
    }
}

C#SomeType.cs

namespace Silverlight.Mine
{
    public class SomeType
    {
        public List SomeDates { get; set; }

        public SomeType()
        {
            SomeDates = new List();
            SomeDates.Add(DateTime.Now.AddDays(-1));
            SomeDates.Add(DateTime.Now);
            SomeDates.Add(DateTime.Now.AddDays(1));
        }
    }

    public class SomeTypeConverter : IValueConverter
    {
        public object Convert(object value,
                       Type targetType,
                       object parameter,
                       CultureInfo culture)
        {
            if (value != null)
            {
                List myList = (List)value;
                return myList[0].ToString("dd MMM yyyy");
            }
            else
            {
                 return String.Empty;
            }
        }

        public object ConvertBack(object value,
                              Type targetType,
                              object parameter,
                              CultureInfo culture)
        {
            if (value != null)
            {
                return (List)value;
            }
            return null;
        }
    }
}

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有