在silverlight4中将多个属性绑定到文本框的多个属性

时间:2013-08-20 14:26:05

标签: data-binding silverlight-4.0

我的复杂类型如下

 public class EmployeessList
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LatName { get; set; }

}

我将上述complextype的绑定列表添加到datagrid所以

    <sdk:DataGridTemplateColumn Header="Value" Width="150*" >
                                                                    <sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel VerticalAlignment="Center">
<TextBox x:Name="{Binding Id}"  Text="{Binding FirstName,Mode=TwoWay}"   />
</StackPanel>
</DataTemplate>
                                                                    </sdk:DataGridTemplateColumn.CellTemplate>

如上所述,我想将多个属性绑定到文本框的多个属性,如

当我运行此代码时,它会给出错误的xaml解析异常,如下所示。

---------------------------
Message from webpage
---------------------------
Unhandled Error in Silverlight Application 
Code: 4004    
Category: ManagedRuntimeError       
Message: System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: System.Windows.Markup.XamlParseException: The name already exists in the tree: . [Line: 0 Position: 0] ---> System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.

   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)

   at System.Windows.ResourceManagerWrapper.GetResourceForUri(Uri xamlUri, Type componentType)

   --- End of inner exception stack trace ---

   at MS.Internal.XcpImports.MethodEx(IntPtr ptr, String name, CValue[] cvData)

   at MS.Internal.XcpImports.MethodEx(DependencyObject obj, String name)

   at MS.Internal.XcpImports.DataTemplate_LoadContent(DataTemplate template)

   at System.Windows.DataTemplate.LoadContent()

   at System.Windows.Controls.DataGridTemplateColumn.GenerateElement(DataGridCell cell, Object dataItem)

   at System.Windows.Controls.DataGridColumn.GenerateElementInternal(DataGridCell cell, Object dataItem)

   at System.Windows.Controls.DataGrid.PopulateCellContent(Boolean isCellEdited, DataGridColumn dataGridColumn, DataGridRow dataGridRow, DataGridCell dataGridCell)

   at System.Windows.Controls.DataGrid.AddNewCellPrivate(DataGridRow row, DataGridColumn column)

   at System.Windows.Controls.DataGrid.CompleteCellsCollection(DataGridRow dataGridRow)

   at System.Windows.Controls.DataGrid.GenerateRow(Int32 rowIndex, Int32 slot, Object dataContext)

   at System.Windows.Controls.DataGrid.GenerateRow(Int32 rowIndex, Int32 slot)

   at System.Windows.Controls.DataGrid.InsertDisplayedElement(Int32 slot, Boolean updateSlotInformation)

   at System.Windows.Controls.DataGrid.GetExactSlot…
---------------------------
OK   
---------------------------

1 个答案:

答案 0 :(得分:0)

你的问题在于这一部分:

x:Name="{Binding Id}"

您无法绑定x:Name属性(来源herehere)。你能通过绑定该属性来解释你想要实现的目标吗?也许它可以通过其他方式完成。