public DatePicker DajDatePicker(PropertyInfo paPropertyInfo, SqlEntita paEntita = null) { var picker = new DatePicker { FontSize = 20, Margin = new Thickness(5, 5, 0, 5), MaxWidth = 180, Text = "vyberte dátum", SelectedDateFormat = DatePickerFormat.Short, }; var binding = new Binding() { Path = new PropertyPath(paPropertyInfo.Name), Source = paEntita ?? DataContext, Mode = paPropertyInfo.CanWrite ? BindingMode.TwoWay : BindingMode.OneWay, ConverterCulture = CultureInfo.CurrentCulture }; if (paPropertyInfo.PropertyType == typeof(string)) { binding.Converter = new StringDateTimeConverter(); } picker.SetBinding(DatePicker.SelectedDateProperty, binding); return(picker); }
private TextBox DajInputBox(PropertyInfo paPropertyInfo, SqlEntita paEntita = null, SqlClassAttribute paAttribut = null) { var box = new TextBox { FontSize = 20, IsReadOnly = !paPropertyInfo.CanWrite || paAttribut?.ReadOnly == true, Margin = new Thickness(5, 5, 0, 5), MaxWidth = 180, MaxLines = 10, TextWrapping = TextWrapping.Wrap, MaxLength = (paAttribut?.Length ?? 0) != 0 ? paAttribut.Length : 50 }; box.SetBinding(TextBox.TextProperty, new Binding() { Path = new PropertyPath(paPropertyInfo.Name), Source = paEntita ?? DataContext, Mode = paPropertyInfo.CanWrite ? BindingMode.TwoWay : BindingMode.OneWay, ConverterCulture = CultureInfo.CurrentCulture, StringFormat = paAttribut?.SpecialFormat }); return(box); }
public static SqlClassAttribute ExtractSqlClassAttribute(SqlEntita paEntita) { return(paEntita.GetType().GetCustomAttributes(typeof(SqlClassAttribute), false).OfType <SqlClassAttribute>()?.First()); }
private SqlClassAttribute DajAtributTabulky(SqlEntita paEntita) { return(SqlClassAttribute.ExtractSqlClassAttribute(paEntita)); }
private void GenerujPodlaSqlEntity(SqlEntita paRefencia = null) { var model = _aktualnaEntita = paRefencia ?? ModelAkoEntita; var atr = SqlClassAttribute.ExtractSqlClassAttribute(model); Zmazat.Visibility = this.Delete && model.DeleteEnabled ? Visibility.Visible : Visibility.Collapsed; if (atr.IgnoreEntity) { return; } FormularTitulok.Text = ModelAkoEntita != null?DajAtributTabulky(ModelAkoEntita).ElementName : string.Empty; var props = model.GetType().GetProperties(); foreach (var propertyInfo in props) { var atribut = this.DajAtributStlpca(propertyInfo); if (atribut.ShowElement == false) { continue; } if (atribut.IsReference) { var property = propertyInfo.GetValue(model) as SqlEntita;// ?? Activator.CreateInstance(propertyInfo.PropertyType) as SqlEntita; if (property == null) { continue; } GenerujPodlaSqlEntity(property); continue; } DajNovyRiadok(); var label = DajLabel(propertyInfo, atribut); UIElement inputBoxOrImage = null; if (atribut?.IsBitmapImage == false) { if (atribut?.IsDate == false) { inputBoxOrImage = DajInputBox(propertyInfo, model, atribut); } else { inputBoxOrImage = DajDatePicker(propertyInfo, model); } } else { inputBoxOrImage = new Image(); var img = new BitmapImage { StreamSource = (MemoryStream)propertyInfo.GetValue(Model) }; ((Image)inputBoxOrImage).Source = img; } label.SetValue(Grid.RowProperty, Formular.RowDefinitions.Count - 1); label.SetValue(Grid.ColumnProperty, 0); inputBoxOrImage.SetValue(Grid.RowProperty, Formular.RowDefinitions.Count - 1); inputBoxOrImage.SetValue(Grid.ColumnProperty, 1); Formular.Children.Add(label); Formular.Children.Add(inputBoxOrImage); } }