using KGIS.Framework.Platform; using Kingo.Plugin.MapView.Enum; using Kingo.Plugin.MapView.Model; using Kingo.PluginServiceInterface.Model; using System; using System.Collections; using System.Collections.Generic; using System.Windows; using System.Windows.Controls; namespace Kingo.Plugin.MapView.Views.FeatureAttribute { /// /// UCFieldsInfo.xaml 的交互逻辑 /// public partial class UCFieldsInfo : UserControl, IPropertyStruct { private LayerFieldCfg Cfg = null; private List _Items; private string key; private string val; public enumPropertyType PropertyType { get { return (enumPropertyType)GetValue(PropertyTypeProperty); } set { SetValue(PropertyTypeProperty, value); } } public IEnumerable ItemsSource { get { return _Items; } set { try { _Items = (List)value; } catch (Exception ex) { _Items = new List(); throw ex; } finally { //RefreshView(); } } } public static readonly DependencyProperty KeyProperty = DependencyProperty.Register("Key", typeof(string), typeof(UCFieldsInfo), new PropertyMetadata(null)); public static readonly DependencyProperty ValueProperty = DependencyProperty.Register("Value", typeof(string), typeof(UCFieldsInfo), new UIPropertyMetadata(null, new PropertyChangedCallback(OnReCalcLayout))); public static readonly DependencyProperty PropertyTypeProperty = DependencyProperty.Register("PropertyType", typeof(enumPropertyType), typeof(UCFieldsInfo), new UIPropertyMetadata(enumPropertyType.TextBox, new PropertyChangedCallback(OnReBindingLayout))); public string Key { get { return (string)GetValue(KeyProperty); } set { SetValue(KeyProperty, value); } } public string Value { get { return (string)GetValue(ValueProperty); } set { SetValue(ValueProperty, value); } } public List DicData { get; set; } public string DisplayMemberPath { get; set; } public string ValuePath { get; set; } public bool IsReadOnly { get; set; } public bool Visible { get; set; } public UCFieldsInfo() { InitializeComponent(); //_Items = new List(); //string cfgFilePath = System.IO.Path.Combine(SysAppPath.GetConfigPath(), "LayerFieldsCfg.xml"); //Cfg = SerializeAPI.DeserializeToObject2(cfgFilePath); } private static void OnReCalcLayout(DependencyObject sender, DependencyPropertyChangedEventArgs e) { //(sender as UCFieldsInfo).ReCalcLayout(); (sender as UCFieldsInfo).ChangeView(); } private static void OnReBindingLayout(DependencyObject sender, DependencyPropertyChangedEventArgs e) { //(sender as UCFieldsInfo).ReCalcLayout(); (sender as UCFieldsInfo).SetBinding(); } private void SetBinding() { //Binding bind = new Binding(); //bind.Path = new PropertyPath("Value"); //bind.Mode = BindingMode.TwoWay; //bind.UpdateSourceTrigger = UpdateSourceTrigger.LostFocus; //bind.RelativeSource = new RelativeSource(RelativeSourceMode.TemplatedParent); switch (PropertyType) { case enumPropertyType.Default: break; case enumPropertyType.TextBox: //TextBox.Visibility = Visibility.Visible; //TextBox.SetBinding(TextBox.TextProperty, bind); break; case enumPropertyType.ComboBox: break; case enumPropertyType.CheckBox: break; case enumPropertyType.DatePicker: break; case enumPropertyType.SpinEdit: break; case enumPropertyType.ButtonEdit: break; case enumPropertyType.ButtonEditFJ: break; case enumPropertyType.AutoCompleteBox: break; default: break; } } private void ChangeView() { lable.Content = Key; TextBox.Text = Value; } //private void RefreshView() //{ // SetVisible(_Items); // #region // LayerInfo layer = Cfg.Layers[0]; // grid.Children.Clear(); // grid.RowDefinitions.Clear(); // foreach (var item in _Items) // { // if (item.Visible) // { // grid.RowDefinitions.Add(new RowDefinition()); // Label lab = new Label(); // lab.Content = item.Key; // lab.SetValue(Grid.RowProperty, grid.RowDefinitions.Count - 1); // lab.HorizontalContentAlignment = HorizontalAlignment.Right; // lab.Margin = new Thickness(4); // grid.Children.Add(lab); // Control ctrl = new TextBox(); // Binding bind = new Binding(); // bind.Path = new PropertyPath("Value"); // bind.Mode = BindingMode.TwoWay; // bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged; // switch (item.PropertyType) // { // case enumPropertyType.Default: // case enumPropertyType.TextBox: // ctrl = new TextBox(); // //ctrl.DataContext = item; // ctrl.SetBinding(TextBox.TextProperty, bind); // break; // case enumPropertyType.CheckBox: // ctrl = new CheckBox(); // //ctrl.DataContext = item; // ctrl.SetBinding(CheckBox.IsCheckedProperty, bind); // break; // case enumPropertyType.DatePicker: // ctrl = new DatePicker(); // //ctrl.DataContext = item; // ctrl.SetBinding(DatePicker.TextProperty, bind); // break; // case enumPropertyType.SpinEdit: // break; // case enumPropertyType.ButtonEdit: // break; // case enumPropertyType.ComboBox: // case enumPropertyType.AutoCompleteBox: // ctrl = new AutoCompleteBox(); // //ctrl.DataContext = item; // ctrl.SetValue(AutoCompleteBox.ItemsSourceProperty, item.DicData); // ctrl.SetValue(AutoCompleteBox.ValueMemberPathProperty, item.ValuePath); // ctrl.SetValue(AutoCompleteBox.DisplayMemberPathProperty, item.DisplayMemberPath); // ctrl.SetBinding(AutoCompleteBox.SelectedValueProperty, bind); // break; // default: // break; // } // ctrl.SetValue(Grid.RowProperty, grid.RowDefinitions.Count - 1); // ctrl.SetValue(Grid.ColumnProperty, 1); // ctrl.HorizontalAlignment = HorizontalAlignment.Stretch; // ctrl.Margin = new Thickness(2); // grid.Children.Add(ctrl); // } // } // #endregion //} //private void SetVisible(List pList) //{ // if (Cfg == null) return; // if (Cfg.Layers.Count == 0) return; // LayerInfo layer = Cfg.Layers[0]; // foreach (var item in layer.Fields) // { // string val = string.Empty; // int idx = -1; // List TempDic = null; // var GroupField = pList.FirstOrDefault(f => f.Key == item.Name || f.Key == item.AliasName); // if (GroupField == null) // { // GroupField = new PropertyGridDataStruct(); // GroupField.PropertyType = enumPropertyType.ComboBox; // } // GroupField.Key = item.AliasName; // foreach (var subItem in item.Fields) // { // var field = pList.FirstOrDefault(f => f.Key == subItem.Name || f.Key == subItem.AliasName); // if (field == null) return; // if (!string.IsNullOrWhiteSpace(field.Value)) // { // //if (!string.IsNullOrWhiteSpace(val.ToTrim())) // // val += " - "; // //val += field.Value; // } // if (GroupField.PropertyType == field.PropertyType) // { // GroupField.Value = field.Value; // GroupField.DicData = field.DicData; // GroupField.ValuePath = field.ValuePath; // GroupField.DisplayMemberPath = field.DisplayMemberPath; // } // if (!string.IsNullOrWhiteSpace(subItem.DisplayWhere.ToTrim())) // { // //字段显示条件 // string[] wheres = subItem.DisplayWhere.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); // for (int i = 0; i < wheres.Length; i++) // { // string[] kv = wheres[i].Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); // if (kv.Length != 2) // { // LogAPI.Debug(string.Format("图层字段配置错误,FieldCfg中Name={0}", subItem.Name)); // continue; // } // var tempField = pList.FirstOrDefault(f => f.Key == kv[0] || f.Key == kv[0]); // if (tempField != null) // { // if (kv[1].ToTrim().Contains("%")) // subItem.Display = tempField.Value.ToTrim().StartsWith(kv[1].ToTrim().Replace("%", "")); // else // subItem.Display = tempField.Value.ToTrim() == kv[1].ToTrim(); // } // } // } // field.Visible = subItem.Display; // if (field.Visible) // { // item.Display = false; // } // if (idx == -1) // { // idx = pList.IndexOf(field); // } // } // if (item.Display) // { // if (idx == -1) idx = 0; // var field = pList.FirstOrDefault(f => f.Key == item.Name || f.Key == item.AliasName); // if (field == null) // { // GroupField.Value = val; // GroupField.Visible = item.Display; // pList.Insert(idx, GroupField); // } // GroupField.Visible = item.Display; // } // } //} } }