WPF的下拉复选框多选,数据来源数据库的表
页面控件使用
<Label Style="{StaticResource ListSearch-Label}" Content="走货方式:"/>
<c1:C1ComboBox BorderThickness="1" Width="110"
<xctk:CheckComboBox Width="113" Style="{StaticResource ListSearch-XctkCheckComboBox}"
ItemsSource="{Binding ShippmentWayList,Mode=TwoWay}"
DisplayMemberPath="ShipWay" ValueMemberPath="ShipWay"
SelectedItemsOverride="{Binding ShippmentWayItems,Mode=TwoWay, UpdateSourceTrigger=PropertyChanged,
ValidatesOnExceptions=True, ValidatesOnDataErrors=True, NotifyOnValidationError=True}"
SelectedValue="{Binding ShippmentWay, Mode=TwoWay}"/>
cs
private ObservableCollection<dynamic> _shippmentWayItems;
private string _shippmentWay;
public string ShippmentWay
{
get
{
return _shippmentWay;
}
set
{
if (_shippmentWay != null && _shippmentWay.Contains("-1") && value != null && !value.Contains("-1"))
{
_shippmentWayItems = new ObservableCollection<dynamic>() { };
}
//等于-1这个可以护理,我的key和value用的都是中文
else if (_shippmentWay != null && !_shippmentWay.Contains("-1") && value != null && value.Contains("-1"))
{
_shippmentWay = InitWayStatus();
_shippmentWayItems = new ObservableCollection<dynamic>() { };
foreach (var item in ShippmentWayList)
{
_shippmentWayItems.Add(new { name = item.ShipWay, value = item.ShipWay });
}
}
_shippmentWay = value;
if (SearchItem != null)
{
SearchItem.ShippmentWay = _shippmentWay;
}
RaisePropertyChanged(() => ShippmentWayItems);
RaisePropertyChanged(() => ShippmentWay);
}
}
/// <summary>
/// 获取所有走货方式数据来源数据库
/// </summary>
private void GetShipingWayList()
{
string error;
var list = _shipWayService.FindByIsShip((int)_fSaleType, out error);
if (list == null)
{
ShippmentWayList = new ObservableCollection<ShipWayModel>();
}
else
{
ShippmentWayList = new ObservableCollection<ShipWayModel>(list);
}
RaisePropertyChanged(() => ShippmentWayList);
}
/// <summary>
/// 默认走货方式的状态初始化,把这个方法放在初始化种
/// </summary>
/// <returns></returns>
private string InitWayStatus()
{
var list = new List<string>();
if (ShippmentWayList==null) {
GetShipingWayList();
}
foreach (var item in ShippmentWayList)
{
list.Add(item.ShipWay);
}
return string.Join(",", list);
}