搞的头昏眼花,现在记录下来备忘
xaml中:
添加引用:
xmlns:riaControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.DomainServices" --引用DomainServices
xmlns:my="clr-namespace:MIIMS.Web.DataBase_Model" --- sl项目中的wcf服务
添加资源:
<riaControls:DomainDataSource AutoLoad="True" x:Key="kpwDDS"
LoadedData="kpwDomainDataSource_LoadedData"
QueryName="GetKj150_patrol_wayQuery" >
<riaControls:DomainDataSource.DomainContext>
<my:DS_System />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
其中:
QueryName="GetKj150_patrol_wayQuery"是wcf中定义
<my:DS_System /> 是wcf服务名称
DataForm 中的数据项:
<dataFormToolkit:DataField Label="所在线路:">
<ComboBox Width="200" x:Name="cbbIndf"
ItemsSource="{Binding Path=Data,Mode=TwoWay,Source={StaticResource kpwDDS}}"
DisplayMemberPath="pw_name" SelectedValuePath="pw_id"
SelectedValue="{Binding Path=pp_pw_id,Mode=TwoWay}"/>
</dataFormToolkit:DataField>
其中的 SelectedValue="{Binding Path=pp_pw_id,Mode=TwoWay}" path=pp_pw_id 是DataForm 数据源中对应的项,如果不设置这个属性在DataForm提交保存时将无法取得对应的值.
后台代码:
为DataForm 绑定数据源 UserRegistration.CurrentItem = .....; 可放在初始化或loaded等位置.
LoadedData处理方法:
private void kpwDomainDataSource_LoadedData(object sender, System.Windows.Controls.LoadedDataEventArgs e)
{
if (e.HasError) //错误处理
{
System.Windows.MessageBox.Show(e.Error.ToString(), "Load Error", System.Windows.MessageBoxButton.OK);
e.MarkErrorAsHandled();
}
else
{ //设置默认选项
ComboBox cbb = this.UserRegistration.FindNameInContent("cbbIndf") as ComboBox;
if (null != cbb)
{
cbb.SelectedValue = _kpp.pp_pw_id;
}
}
}
至此完成.