首次提交:添加src文件夹代码
This commit is contained in:
127
Cowain.Bake.Main/Models/MultiComboBox.cs
Normal file
127
Cowain.Bake.Main/Models/MultiComboBox.cs
Normal file
@@ -0,0 +1,127 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace Cowain.Bake.Main.Views
|
||||
{
|
||||
public class MultiComboBox:ComboBox
|
||||
{
|
||||
static MultiComboBox()
|
||||
{
|
||||
DefaultStyleKeyProperty.OverrideMetadata(typeof(MultiComboBox), new FrameworkPropertyMetadata(typeof(MultiComboBox)));
|
||||
}
|
||||
|
||||
private static void OnPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
|
||||
{
|
||||
d.SetValue(e.Property, e.NewValue);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 选中项列表
|
||||
/// </summary>
|
||||
public ObservableCollection<MultiCbxBaseData> ChekedItems = new ObservableCollection<MultiCbxBaseData>();
|
||||
|
||||
/// <summary>
|
||||
/// ListBox竖向列表
|
||||
/// </summary>
|
||||
private ListBox _ListBoxV;
|
||||
|
||||
/// <summary>
|
||||
/// ListBox横向列表
|
||||
/// </summary>
|
||||
private ListBox _ListBoxH;
|
||||
|
||||
public override void OnApplyTemplate()
|
||||
{
|
||||
base.OnApplyTemplate();
|
||||
_ListBoxV = Template.FindName("PART_ListBox", this) as ListBox;
|
||||
_ListBoxH = Template.FindName("PART_ListBoxChk", this) as ListBox;
|
||||
_ListBoxH.ItemsSource = ChekedItems;
|
||||
_ListBoxV.SelectionChanged += _ListBoxV_SelectionChanged;
|
||||
_ListBoxH.SelectionChanged += _ListBoxH_SelectionChanged;
|
||||
|
||||
if (ItemsSource != null)
|
||||
{
|
||||
foreach (var item in ItemsSource)
|
||||
{
|
||||
MultiCbxBaseData bdc = item as MultiCbxBaseData;
|
||||
if (bdc.IsCheck)
|
||||
{
|
||||
_ListBoxV.SelectedItems.Add(bdc);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void _ListBoxH_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
foreach (var item in e.RemovedItems)
|
||||
{
|
||||
MultiCbxBaseData datachk = item as MultiCbxBaseData;
|
||||
|
||||
for (int i = 0; i < _ListBoxV.SelectedItems.Count; i++)
|
||||
{
|
||||
MultiCbxBaseData datachklist = _ListBoxV.SelectedItems[i] as MultiCbxBaseData;
|
||||
if (datachklist.Id == datachk.Id)
|
||||
{
|
||||
_ListBoxV.SelectedItems.Remove(_ListBoxV.SelectedItems[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _ListBoxV_SelectionChanged(object sender, SelectionChangedEventArgs e)
|
||||
{
|
||||
foreach (var item in e.AddedItems)
|
||||
{
|
||||
MultiCbxBaseData datachk = item as MultiCbxBaseData;
|
||||
datachk.IsCheck = true;
|
||||
if (ChekedItems.IndexOf(datachk) < 0)
|
||||
{
|
||||
ChekedItems.Add(datachk);
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var item in e.RemovedItems)
|
||||
{
|
||||
MultiCbxBaseData datachk = item as MultiCbxBaseData;
|
||||
datachk.IsCheck = false;
|
||||
ChekedItems.Remove(datachk);
|
||||
}
|
||||
}
|
||||
public class MultiCbxBaseData
|
||||
{
|
||||
private int _id;
|
||||
public int Id
|
||||
{
|
||||
get { return _id; }
|
||||
set { _id = value; }
|
||||
}
|
||||
|
||||
private string _viewName;
|
||||
public string ViewName
|
||||
{
|
||||
get { return _viewName; }
|
||||
set
|
||||
{
|
||||
_viewName = value;
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isCheck;
|
||||
/// <summary>
|
||||
/// 是否选中
|
||||
/// </summary>
|
||||
public bool IsCheck
|
||||
{
|
||||
get { return _isCheck; }
|
||||
set { _isCheck = value; }
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user