2010-10-05 19 views
0

我有一些數據,我需要呈現給用戶一個非常特定的格式,我想要的東西,看起來像這樣:哪種WPF控件應該用於這種所需的輸出格式?

+- Window 1 --------------------------+ +- Window 2 ----------+ 
| This is some text that is being  | | Yet more stuff  | 
| output for the user.    | |      | 
|          | |      | 
+-------------------------------------+ +---------------------+ 
+- Window 3 ----------------+ +- Window 4 --------------------+ 
| Yoiks!     | | Blah blah blah    | 
| To eternity and beyond... | |        | 
|       | |        | 
+---------------------------+ +-------------------------------+ 

將會有大量的這類產品,都帶有不同的標題,他們將是固定的尺寸(每個部分將是不同的大小,但每個部分的大小是固定的)。部分內的文本將是固定字體(如Courier),不成比例。

我已經設置了WPF StackPanels來按照我想要的方式正確安排這些控件。我只需要知道什麼是實際內容的最佳控制(一個很好的框架和標題,內有固定大小的文本)。

另一件事,我需要能夠強調控件內的一個或多個字符。在我的Java版本中,我可以使用HTML來執行此操作。如果文本能夠具有其他屬性(如前景色和背景色),但也不是絕對必要的,它也會很好。

回答

3

你應該將你的佈局問題分爲多個不同的層次。首先是你的「窗戶」有多大以及在哪裏。在這裏,我要麼在彼此內部使用一堆堆棧面板或網格。這可能有點重量輕,但它會讓你的佈局非常靈活。

然後我會使用GroupBoxes來獲得「標題窗口」的外觀。然後,您可以設置任何內容。

這樣的事情?

<Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="3*" /> 
      <RowDefinition Height="2*" /> 
     </Grid.RowDefinitions> 
     <Grid Grid.Row="0"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="2*" /> 
       <ColumnDefinition Width="1*" /> 
      </Grid.ColumnDefinitions> 
      <GroupBox BorderThickness="1" BorderBrush="Black" Header="Window 1" Grid.Column="0"> 
       <TextBlock>This is some text that is being output for the user.</TextBlock> 
      </GroupBox> 
      <GroupBox BorderThickness="1" BorderBrush="Black" Header="Window 2" Grid.Column="1"> 
       <TextBlock>Yet more stuff</TextBlock> 
      </GroupBox> 
     </Grid> 
     <Grid Grid.Row="1"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="2*" /> 
       <ColumnDefinition Width="3*" /> 
      </Grid.ColumnDefinitions> 
      <GroupBox BorderThickness="1" BorderBrush="Black" Header="Window 3" Grid.Column="0"> 
       <TextBlock> 
        Yoiks! 
        To eternity and beyond... 
       </TextBlock> 
      </GroupBox> 
      <GroupBox BorderThickness="1" BorderBrush="Black" Header="Window 4" Grid.Column="1"> 
       <TextBlock>Blah blah blah</TextBlock> 
      </GroupBox> 
     </Grid> 
    </Grid> 

alt text

1

有無數的方法來做到這一點。 WPF控件非常靈活。

<Border Width="320" Height="200" Canvas.Left="40" Canvas.Top="72" BorderThickness="1" BorderBrush="Black"> 
     <DockPanel> 
      <Label Content="Window 1" VerticalAlignment="Top" Width="320" Background="#FFFFE58B" DockPanel.Dock="Top" /> 
      <RichTextBox DockPanel.Dock="Bottom"> 
       <FlowDocument> 
        <Paragraph><Run Text="I am a fancy textbox"/></Paragraph> 
       </FlowDocument> 
      </RichTextBox> 
     </DockPanel> 
    </Border> 

你應該能夠做任何事情,你需要在一個豐富的文本框格式明智

相關問題