WPF:如何显示文本块和文本框流入的组合?

时间:2014-01-10 11:00:52

标签: wpf

我想显示固定宽度的文本块和文本框流入的组合。记住它是多行文字。我应该使用哪个容器控件来实现这一点。我尝试使用具有固定宽度的StackPanel,但它不起作用。

例如:

一些文字bla bla #Text box#again有些文字bla bla #txtbx#再一些文本#Textbox #text some 文本bla再一些文本#textbox #text some text bla

5 个答案:

答案 0 :(得分:1)

您可以使用TextElement来执行此操作,如

<TextBlock TextWrapping="Wrap">
    <Run Text="I comma " />
    <TextBox Width="100" Text="recruit's name" />            
    <Run Text="comma  do solemnly swear by " />
    <TextBox Width="150" Text="recruit's deity of choice"/>            
    <Run Text=" to uphold the Laws and Ordinances of the City of Ankh-Morpork" />
</TextBlock>

您可能需要调整TextBoxes边距以使其与其他文本一致。

答案 1 :(得分:1)

您可以使用FlowDocument,即:

<FlowDocumentReader xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
        <FlowDocument>
            <Paragraph>
                <Bold>Some bold text in the paragraph.</Bold>

                 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eu ipsum vitae sem elementum mollis tempor et neque. 
            </Paragraph>


            <Paragraph>
                <TextBox Text="I'm a textbox"></TextBox>
                <Button Content="Click Me"></Button>
            </Paragraph>
                    <List>
                <ListItem>
                    <Paragraph>ListItem 1</Paragraph>
                </ListItem>
                <ListItem>
                    <Paragraph>ListItem 2</Paragraph>
                </ListItem>
                <ListItem>
                    <Paragraph>ListItem 3</Paragraph>
                </ListItem>
            </List>

        </FlowDocument>
    </FlowDocumentReader>

获得这个: enter image description here

答案 2 :(得分:0)

你试过WrapPanel吗?我认为这是做你想做的最好的容器。您可以像StackPanel一样使用它,并根据其大小和项目大小,WrapPanel组织项目以感知空间水平和垂直。

希望这有帮助

答案 3 :(得分:0)

我建议您将ItemsControls与ItemsContainer一起用作WrapPanel

使用ViewModel中的Collection绑定ItemsControl,然后在View中设计DataTemplate

答案 4 :(得分:0)

<Grid>
    <Grid.ColumnDefinitions>
         <ColumnDefinition/>
         <ColumnDefinition/>
         <ColumnDefinition/>
     </Grid.ColumnDefinitions>
     <TextBlock Grid.Column="0"/>
     <TextBox Grid.Column="1"/>
     <TextBlock Grid.Column="2"/>
     <TextBox Grid.Column="3"/>
<Grid/>

或者

<Grid>
<Grid.RowDefinitions>
     <RowDefinition/>
     <RowDefinition/>
     <RowDefinition/>
 </Grid.RowDefinitions>
 <TextBlock Grid.Row="0"/>
 <TextBox Grid.Row="1"/>
 <TextBlock Grid.Row="2"/>
 <TextBox Grid.Row="3"/>
 <Grid/>

或您需要的任何组合

如果您需要TextBox的TextBlocks的任何特殊内容,您可以像这样设置宽度

      <ColumnDefinition Width="50"/>