2012-11-16 44 views
0

我需要以結構化的方式顯示一些數據,並使用彩色字母和行以及背景顏色。C#中的WPF網格單元格無文字

我在WPF窗口中創建了一個網格。它顯示文本框和一些標籤,但沒有任何文本。此外,列標題,最後一列,gridseperators,柵格機器人和左邊緣都不可見。

Current status of my WPF window

我的網叫propertiesView。

代碼,用於將報頭元件(標籤)

private void AddHeaderElement(string text, int row, int col) 
    { 
     Label headerElement = new Label(); 
     headerElement.Height = cellHeight; 
     headerElement.Width = cellWidth; 
     headerElement.DataContext = text; 
     headerElement.Background = headerBackground; 
     headerElement.BorderBrush = new SolidColorBrush(Color.FromRgb(120, 120, 120)); 
     headerElement.BorderThickness = new Thickness(3); 

     propertiesView.Children.Add(headerElement); 
     Grid.SetRow(headerElement, row); 
     Grid.SetColumn(headerElement, col); 
    } 

代碼,用於將細胞

RichTextBox cell = new RichTextBox(); 

cell.Height = cellHeight; 
cell.Width = cellWidth; 
cell.ToolTip = toolTip; 
cell.DataContext = text; 
cell.Background = rowDifferent; 

propertiesView.Children.Add(cell); 

//box.SetValue(Grid.RowProperty, rowCount); 
//box.SetValue(Grid.ColumnProperty, columnCount); 
Grid.SetRow(cell, rowCount); 
Grid.SetColumn(cell, columnCount); 

代碼,用於將網格分隔符

GridSplitter colSeperator = new GridSplitter(); 
colSeperator.Margin = new Thickness(-2.5, 0, 0, 0); 
colSeperator.Width = 5; 
colSeperator.ResizeDirection = GridResizeDirection.Columns; 
colSeperator.ResizeBehavior = GridResizeBehavior.CurrentAndNext; 
colSeperator.VerticalAlignment = VerticalAlignment.Stretch; 
colSeperator.HorizontalAlignment = HorizontalAlignment.Left; 

propertiesView.Children.Add(colSeperator); 
Grid.SetColumn(colSeperator, 0); 
Grid.SetRowSpan(colSeperator, totalRows + 1); 

工具提示做顯示正確的文字。 我嘗試使用TextBox而不是RichTextBox,並在類構造函數中設置所有這些東西而不是單獨的方法。

回答

0

事實證明,我需要的TextBlocks,跨度和運行的標籤。 風格可以添加在跨度上(通過像Foreground,TextDecoration或FontWeight這樣的屬性)。將文本添加到Run中的跨度,然後將所有跨度添加到通過標籤顯示的文本塊。

Span span = new Span(); 
span.Foreground = Brushes.Black; 
span.Inlines.Add(new Run("Text")); 

textBlock.Inlines.Add(span); 

Label cell = new Label(); 

cell.MinHeight = cellHeight; 
cell.MaxWidth = cellWidth * 3; 
cell.MinWidth = cellWidth; 
cell.ToolTip = "toolTip"; 
cell.BorderThickness = new Thickness(2); 

TextBlock cellText = new TextBlock(); 
cellText.HorizontalAlignment = HorizontalAlignment.Stretch; 
cellText.TextWrapping = TextWrapping.WrapWithOverflow; 

cell.Content = cellText; 

該文本現在工作,我應該能夠得到gridseperators工作。

1

好吧,你好像你從來沒有在你的標籤上設置Content依賴屬性,或者你的RichTextBoxes的Document

爲標籤,當你設置text參數作爲DataContext的,你可以添加類似

headerElement.SetBinding(Label.ContentProperty, new Binding()); 
+0

謝謝,我不知道。但是這隻能讓文本顯示在可見的標籤上。富文本框中的文本保持不變,而其他內容仍然不可見。 – MrFox

+0

RichTextBox不容易綁定。您需要一個適當的流程文檔來設置其內容。還有什麼東西還是看不見? – Sisyphe