1

我正在使用此代码将 Textblock 写入 Xaml 页面:

  Sale.Name = "Price";
  Sale.Text = "$200";
  deatilLayout.Children.Add(Sale);
  Grid.SetRow(Sale, 1);

这成功地将数据放置在 xaml 页面上,但位置不正确。

  <FlipView
            x:Name="flipView"
            AutomationProperties.AutomationId="ItemsFlipView"
            AutomationProperties.Name="Item Details"
            TabIndex="1"
            Grid.RowSpan="2"
            ItemsSource="{Binding Source={StaticResource itemsViewSource}}">

            <FlipView.ItemContainerStyle>
                <Style TargetType="FlipViewItem">
                    <Setter Property="Margin" Value="0,137,0,70"/>
                </Style>
            </FlipView.ItemContainerStyle>

            <FlipView.ItemTemplate>
                <DataTemplate>

                    <!--
                        UserControl chosen as the templated item because it supports visual state management
                        Loaded/unloaded events explicitly subscribe to view state updates from the page
                    -->
                    <UserControl Loaded="StartLayoutUpdates" Unloaded="StopLayoutUpdates">
                        <ScrollViewer x:Name="scrollViewer" Style="{StaticResource HorizontalScrollViewerStyle}" Grid.Row="1">

                            <!-- Content is allowed to flow across as many columns as needed -->
                            <common:RichTextColumns x:Name="richTextColumns" Margin="117,0,117,47">
                                <RichTextBlock x:Name="richTextBlock" Width="560" Style="{StaticResource ItemRichTextStyle}" IsTextSelectionEnabled="False">

                                    <Paragraph LineStackingStrategy="MaxHeight" Margin="0,0,0,180">
                                        <InlineUIContainer>
                                            <Image x:Name="image" MaxHeight="480" Margin="0,20,0,100" Stretch="Uniform" Source="{Binding Image}" AutomationProperties.Name="{Binding Title}"/>
                                        </InlineUIContainer>
                                    </Paragraph>
                                    <Paragraph Margin="0,0,0,30" LineHeight="65" FontFamily="Global User Interface">
                                        <Run FontSize="52"  FontWeight="Thin" Text="{Binding Title}" />

                                    </Paragraph>
                                    <Paragraph Margin="0,0,0,50">
                                        <Run Text="TT $" FontSize="24" FontWeight="Thin"/>
                                        <Run FontSize="30" FontWeight="Normal" Text="{Binding Subtitle}"/>


                                    </Paragraph>
                                    <Paragraph x:Name="price" x:FieldModifier="public" />
                                    <Paragraph Margin="0,0,0,40">

                                        <Run FontSize="27" FontWeight="Normal" Text="{Binding Weight}"/>

                                    </Paragraph>
                                    <Paragraph Margin="0,0,0,40" LineHeight="40">

                                        <Run FontSize="35" FontWeight="Normal" Text="{Binding Description}"/>

                                    </Paragraph>
                                    <Paragraph Margin="0,0,0,40" LineHeight="30">

                                        <!--<Run FontSize="22" FontWeight="SemiLight" Text="{Binding Category}"/>-->
                                    </Paragraph>
                                </RichTextBlock>

                                <!-- Additional columns are created from this template -->
                                <common:RichTextColumns.ColumnTemplate>
                                    <DataTemplate>
                                        <RichTextBlockOverflow Width="560" Margin="30,0,0,0">
                                            <RichTextBlockOverflow.RenderTransform>
                                                <TranslateTransform X="-1" Y="4"/>
                                            </RichTextBlockOverflow.RenderTransform>
                                        </RichTextBlockOverflow>
                                    </DataTemplate>
                                </common:RichTextColumns.ColumnTemplate>
                            </common:RichTextColumns>

                            <VisualStateManager.VisualStateGroups>

                                <!-- Visual states reflect the application's view state inside the FlipView -->
                                <VisualStateGroup x:Name="ApplicationViewStates">
                                    <VisualState x:Name="FullScreenLandscape"/>
                                    <VisualState x:Name="Filled"/>

                                    <!-- Respect the narrower 100-pixel margin convention for portrait -->
                                    <VisualState x:Name="FullScreenPortrait">
                                        <Storyboard>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="richTextColumns" Storyboard.TargetProperty="Margin">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="97,0,87,57"/>
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="image" Storyboard.TargetProperty="MaxHeight">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="400"/>
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>

                                    <!-- When snapped, the content is reformatted and scrolls vertically -->
                                    <VisualState x:Name="Snapped">
                                        <Storyboard>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="richTextColumns" Storyboard.TargetProperty="Margin">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="17,0,17,57"/>
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="scrollViewer" Storyboard.TargetProperty="Style">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource VerticalScrollViewerStyle}"/>
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="richTextBlock" Storyboard.TargetProperty="Width">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="280"/>
                                            </ObjectAnimationUsingKeyFrames>
                                            <ObjectAnimationUsingKeyFrames Storyboard.TargetName="image" Storyboard.TargetProperty="MaxHeight">
                                                <DiscreteObjectKeyFrame KeyTime="0" Value="160"/>
                                            </ObjectAnimationUsingKeyFrames>
                                        </Storyboard>
                                    </VisualState>
                                </VisualStateGroup>
                            </VisualStateManager.VisualStateGroups>
                        </ScrollViewer>
                    </UserControl>
                </DataTemplate>
            </FlipView.ItemTemplate>
        </FlipView>

我想将数据放在“detailLayout”RichTextBlock中的段落中。Grid

我该怎么做呢?

4

3 回答 3

1

一种方法是,在 XAML 文件中,将 Paragraph 元素更改为以下内容:

<Paragraph x:Name="price" />

这使得 Paragraph 实例作为名称为“price”的字段对代码隐藏可见。然后,作为示例,您可以使用以下代码在代码隐藏中访问和设置此 Paragraph 实例的内容:

string textToSet = "Price: $200"; // Replace this value with whatever value you want to 
                                  // set in the paragraph.
Run textRun = new Run();
textRun.Text = textToSet;    
this.price.Inlines.Add(textRun);

然后,如果要清除 Paragraph 实例的内容,可以在代码隐藏中执行以下操作:

this.price.Inlines.Clear();

默认情况下,在为 XAML 页面中的元素分配名称时,该元素对外部代码不公开可见。如果需要从 XAML 页面的代码隐藏外部访问“价格”段落元素,则需要将段落元素的声明更改为以下内容:

<Paragraph x:Name="price" x:FieldModifier="public" />

最后要注意的一件事是,如果命名元素位于 DataTemplate 中(通常与 WPF 项控件一起使用),您将无法访问它们。因此,如果是这种情况,您可能希望采用 MVVM 方法。

于 2013-11-11T14:56:01.753 回答
0

我鼓励您使用 MVVM 并尝试以下操作:

 <RichTextBlock    FontSize="12"    FontFamily="Segoe UI" >
                                <Paragraph >
                                    <Run Text="{Binding Sale.Text}"/> <Run Text="{Binding Sale.Text }"/>
                                </Paragraph>
                            </RichTextBlock>

如果您不使用 MVVM,则必须创建一个“运行”对象,插入文本,并将其添加到 RichTextBlock 的子项中。

于 2013-11-11T14:52:41.697 回答
0

为什么不放置 Grid.Column="" 和 Grid.Row=""

<Paragraph Grid.Column="0" and Grid.Row="0">
</Paragraph>
于 2013-11-11T14:24:11.303 回答