public InfoCard(InfoCardModel info, Canvas canvas, bool readOnly) { InitializeComponent(); isReadOnly = readOnly; SetInfoCard(info); parent = canvas; }
private void SetInfoCard(InfoCardModel info) { title.Text = info.title; ColumnDefinition column1 = new ColumnDefinition(); column1.Width = new GridLength(80); gCard.ColumnDefinitions.Add(column1); ColumnDefinition column2 = new ColumnDefinition(); column2.Width = new GridLength(1, GridUnitType.Auto); gCard.ColumnDefinitions.Add(column2); ColumnDefinition column3 = new ColumnDefinition(); column3.Width = new GridLength(1, GridUnitType.Star); gCard.ColumnDefinitions.Add(column3); int i = 0; foreach (KeyValuePair <string, string> field in info.mainFields) { RowDefinition row = new RowDefinition(); row.Height = new GridLength(1, GridUnitType.Auto); gCard.RowDefinitions.Add(row); TextBlock key = new TextBlock(); key.Text = field.Key + ":"; Grid.SetRow(key, i); Grid.SetColumn(key, 1); key.Padding = new Thickness(10, 0, 10, 0); key.VerticalAlignment = VerticalAlignment.Center; gCard.Children.Add(key); TextBox value = new TextBox(); value.Text = field.Value; value.Background = new SolidColorBrush() { Opacity = 0 }; Grid.SetRow(value, i); Grid.SetColumn(value, 2); value.Padding = new Thickness(0, 2, 0, 2); value.VerticalAlignment = VerticalAlignment.Center; value.IsReadOnly = isReadOnly; value.Margin = new Thickness(0, 2, 10, 2); value.TextWrapping = TextWrapping.Wrap; gCard.Children.Add(value); i++; } Image pic = new Image(); pic.Width = 64; pic.Height = 64; BitmapImage bmp = new BitmapImage(); bmp.BeginInit(); string projectName = Assembly.GetCallingAssembly().GetName().Name; bmp.UriSource = new Uri("pack://application:,,,/" + projectName + ";component/Resources/images/operator.png"); bmp.EndInit(); pic.Source = bmp; bmpPin = new BitmapImage(); bmpPin.BeginInit(); bmpPin.UriSource = new Uri("pack://application:,,,/" + projectName + ";component/Resources/images/pin.png"); bmpPin.EndInit(); bmpUnPin = new BitmapImage(); bmpUnPin.BeginInit(); bmpUnPin.UriSource = new Uri("pack://application:,,,/" + projectName + ";component/Resources/images/unpin.png"); bmpUnPin.EndInit(); bmpCollapse = new BitmapImage(); bmpCollapse.BeginInit(); bmpCollapse.UriSource = new Uri("pack://application:,,,/" + projectName + ";component/Resources/images/collapse.png"); bmpCollapse.EndInit(); bmpExpand = new BitmapImage(); bmpExpand.BeginInit(); bmpExpand.UriSource = new Uri("pack://application:,,,/" + projectName + ";component/Resources/images/expand.png"); bmpExpand.EndInit(); Grid.SetRowSpan(pic, i); gCard.Children.Add(pic); foreach (KeyValuePair <string, string> prop in info.additionalProperties) { RowDefinition row = new RowDefinition(); row.Height = new GridLength(1, GridUnitType.Auto); gCard.RowDefinitions.Add(row); TextBlock key = new TextBlock(); key.Text = prop.Key + ":"; Grid.SetRow(key, i); Grid.SetColumn(key, 0); key.Padding = new Thickness(10, 0, 10, 0); key.VerticalAlignment = VerticalAlignment.Center; gCard.Children.Add(key); TextBox value = new TextBox(); value.Text = prop.Value; value.Background = new SolidColorBrush() { Opacity = 0 }; value.VerticalAlignment = VerticalAlignment.Center; Grid.SetRow(value, i); Grid.SetColumn(value, 1); Grid.SetColumnSpan(value, 2); value.Padding = new Thickness(0, 2, 0, 2); value.Margin = new Thickness(0, 2, 10, 2); value.IsReadOnly = isReadOnly; value.TextWrapping = TextWrapping.Wrap; gCard.Children.Add(value); i++; } }