我正在尝试学习如何使用 Silverlight 3 DataForm 控件,因为我需要在 XAML 代码中自己定义 DataForm 字段,也就是说,我不想使用 AutoGenerateFields属性(property)。
我的问题是:当 AutoGenerateFields 设置为 true 时,数据表单工作正常,但是当我创建一个 DataForm 并手动设置字段并运行应用程序时,我得到的只是一个空的空白矩形,我的表单及其字段应该在其中。
我创建了一个空白的 Silverligh 导航应用程序来对此进行测试,下面是 Home.xaml 页面的代码:
<堆栈面板>
<!-- 这是行不通的。它呈现一个空白矩形 -->
<数据模板>
堆栈面板>
数据模板>
<!-- 这行得通。 -->
堆栈面板>
网格>
为了使第二个 DataForm 工作,我简单地创建了一个 Person 类,并将以下内容放入 Home.xaml.cs:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Person client = new Person { Age = 10, DateOfBirth = new DateTime(1980, 10, 20), FirstName = "John", LastName = "Doe" };
DataForm2.CurrentItem = client;
}
你可以看到当我运行应用程序时发生了什么:
有人知道怎么回事吗?提前谢谢你。
最佳答案
为了让某些东西出现,我必须添加:
DataForm.CurrentItem = client;
代码。
这只显示了三个没有标签的文本框和条目“Test1”、“Test2”和“Test3”。这是您所期待的吗?
Silverlight Toolkit示例页面有一个模板驱动数据表单的示例,它的 XAML 如下所示:
<dataform:DataForm x:Name="dataForm" ItemsSource="{Binding}" HorizontalAlignment="Left" MinWidth="400" MaxWidth="500" Margin="4" Grid.Column="1">
<dataform:DataForm.EditTemplate>
<DataTemplate>
<StackPanel>
<dataform:DataField>
<TextBox Text="{Binding FirstName, Mode=TwoWay}" />
</dataform:DataField>
<dataform:DataField>
<TextBox Text="{Binding Email, Mode=TwoWay}" />
</dataform:DataField>
<dataform:DataField>
<TextBox Text="{Binding Phone, Mode=TwoWay}" />
</dataform:DataField>
<dataform:DataField Label="Calendar">
<controls:Calendar></controls:Calendar>
</dataform:DataField>
</StackPanel>
</DataTemplate>
</dataform:DataForm.EditTemplate>
</dataform:DataForm>
还有一行:
DataContext = Contact.People;
在后面的代码中。 (据我所知,类 People
是在别处定义的)
关于silverlight - 数据表单字段不会出现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2067070/