我很抱歉我第一次在堆栈上问问题,所以可能是我做错了。
我已经开始学习WPF MVVM而且我已经卡住了。
我在数据库中有一个参数主表,它有parameterid
,parametername
,parametertype
列。它填充了主数据,例如,国家/地区主数据有parametertype
"国家&#34 ;,城市有"城市" parametertype
,但parameterid
将是唯一的。
现在我有一个客户页面,在customerviewmodel对象中,我有countryId
和CityId
参数保存在客户对象中。
如何将此parameterId
直接与来自XAML的customer.CountryId
绑定?或者那是不可能的?
目前,我已按如下方式实现:定义了一个CountrySelectedItem
属性并将其与组合框SelectedItem
绑定。当其属性发生变化时,当任何人更改其值时,请在viewmodel中设置客户CountryId
设置属性中的CountrySelectedItem
。
如何验证客户的countryID
媒体资源?在组合框中,我绑定了Parameter Master的对象,因此无法将数据Annotation的Required属性写入参数主实体。
以下是完整的场景
公共级客户
{
public int CustomerId { get; set; }
[Required]
public string CustomerName { get; set; }
[Required]
public int CountryId { get; set; }
}
<telerik:RadComboBox x:Name="cmCountryId" Grid.Row="3" Grid.Column="1" HorizontalAlignment="Left"
ItemsSource="{Binding LstCountry}"
HorizontalContentAlignment="Left" VerticalAlignment="Center"
DisplayMemberPath="ParameterName"
SelectedItem="{Binding SelectedCountry,Mode=TwoWay}" Height="25" Width="200" >
</telerik:RadComboBox>
/* To Fill DropDown Country DropDown From ParameterMaster*/
public List<ParameterEntity> LstCountry { get; set; }
LstContainerType = new List<ParameterEntity>(parameterService.GetParamterTypeDetail("COUNTRY").ToList());
/*
Parameter Master has ParameterId,ParameterName,ParameterType -- All Master Data Stored Inside It with Different ParameterType.
*/
/* When User Select CountrId then I Set It's ParameterID As CountryID In My CustomerEntity */
public ParameterEntity SelectedCountry
{
get
{
return _selectedCountry;
}
set
{
_selectedCountry = value;
RaisePropertyChanged("SelectedCountry");
SelectedCustomerEntity.CountryId = _selectedCountry != null ? _selectedCountry.ParameterId : 0;
}
}
So Here Is my question for above Scneraio.
1) To Bind Customer Object's CountryId Property From CountryDropDown is that any other option available then this one.
SelectedCustomerEntity.CountryId = _selectedCountry != null ? _selectedCountry.ParameterId : 0;
// please have a look SelectedCountry property.
Something like , I do not need to write Selected Property and i Can Directly Set ParameterId To CountryId Of CustomerEntity From XAML
Or this one is right scneario.
2) Another Question Is How To do Validation On CountryId ComboBox.
i mean As Mention in CustomerEntity has Required CountryId But In XAMl Design of SelectedItem="{Binding SelectedCountry,Mode=TwoWay}"
What should i write to display if user has not select any country from dropdown. Should I write a logic on Save Button manully ?
答案 0 :(得分:0)
我首先假设您创建一个表单,该表单上有一个提交按钮,可以将选定的数据保存在某个庄园中。
对于组合框,您可以使用SelectedValuePath从您选择的类型中选择一个字段作为您的选择。
<ComboBox SelectedValue="{Binding SelectedCountry}"
ItemsSource="{Binding Countries}"
SelectedValuePath="ParameterId" />
然后,视图模型中的SelectedCountry属性将设置为ParameterId。
对于验证的第二个问题以及如何在模型上的提交函数中绑定Customer.CountryId
,首先要检查SelectedCountry是空还是空,然后显示验证错误消息。否则设置Customer.CountryId = SelectedCountry
并保存客户。