【问题标题】:Silverlight Binding: User controls inside datagridSilverlight 绑定:数据网格内的用户控件
【发布时间】:2011-02-03 13:29:27
【问题描述】:

我的 silverlight 应用程序中有一个 DataGrid,它有几列。几个基本列绑定没有问题。一列中有一个 UserControl,XAML 如下:


<data:DataGridTemplateColumn Header="" CanUserSort="True" Width="107">
    <data:DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <local:StaticPageEnlistment EnlistmentName="{Binding SiteName}" Width="400" Height="150"/>
        </DataTemplate>
    </data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>

所以我有一个公共属性,它是一个名为 EnlistmentName 的字符串,我已绑定到 SiteName 值。我在所有其他列中使用相同的“{Binding SiteName}”没有问题,为什么用户控件不能接受相同的绑定字符串?

【问题讨论】:

    标签: silverlight data-binding


    【解决方案1】:

    猜测您还没有将EnlistmentName 实现为DependencyProperty。你可以在你的 StaticPageEnlistment UserControl 中这样做:-

        public string EnlistmentName
        {
            get { return GetValue(EnlistmentNameProperty) as string; }
            set { SetValue(EnlistmentNameProperty, value); }
        }
    
        public static readonly DependencyProperty EnlistmentNameProperty =
                DependencyProperty.Register(
                        "EnlistmentName",
                        typeof(string),
                        typeof(StaticPageEnlistment ),
                        new PropertyMetadata(null));
    

    【讨论】:

    • 安东尼,你快了 31 秒 :-)
    • 感谢您的建议。我试过了,它似乎没有解决它。此外,当我将字符串硬编码到 EnlistmentName="Test String" 之类的属性中时,绑定工作正常,所以我不认为这是用户控件不允许绑定的问题。
    • 等等。没关系...它现在可以工作了...我不得不将我的财产更改为与您的财产一样,因为它现在可以工作了。谢谢!
    【解决方案2】:

    EnlistmentName 是 DependencyProperty 吗?根据MSDN,绑定的目标必须是DependencyProperty。

    【讨论】:

      猜你喜欢
      • 2013-03-30
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      • 2012-01-20
      • 2010-12-20
      • 1970-01-01
      • 2011-10-29
      • 2014-04-14
      相关资源
      最近更新 更多