UWP拖放格式化文本

时间:2019-03-15 16:28:51

标签: c# xaml uwp

在我的uwp应用程序中,我将要求用户从大量单词中做出有意义的句子:

例如,当用户打开应用程序时,他/她将看到:

“寻求stackoverflow的一个很好的帮助”

然后,用户需要将每个单词拖放到正确的位置上,以根据给定的单词做出有意义的句子:

“ stackoverflow是寻求帮助的好地方”

还请记住,文字应居中对齐

使用单行句子可以通过水平列表视图来完成。我已经做到了。对于多行,我使用了gridview。我将文本中的每个字符串都作为listview / gridview项,并使用listview / gridview控件的reorder属性来使其工作。

但是到那时我还是有问题。

2行文本应如下所示:

------------------
      -------

但是现在看起来像这样:

-----------------
---------

我知道这是因为gridview。但是我目前不知道要解决这个问题。任何想法将不胜感激。

谢谢。

修改:

.xaml:

<StackPanel 
        x:Name="stack_panel1" 
        Margin="50" 
        Orientation="Vertical"
        Background="AliceBlue"
        Padding="50"
        HorizontalAlignment="Center"
        VerticalAlignment="Center"
        >

        <GridView x:Name="GridView1"
                  AllowDrop="True"
                  CanDragItems="True"
                  CanReorderItems="True"
                  Background="PaleGoldenrod"
                  Width="500"
                  Height="500">
            <GridView.ItemsPanel>
                <ItemsPanelTemplate>
                    <ItemsWrapGrid Orientation="Horizontal" MaximumRowsOrColumns="5"></ItemsWrapGrid>
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
        </GridView>

    </StackPanel>

.cs:

public sealed partial class DragDropDemo : Page
    {
        ObservableCollection<string> collection = new ObservableCollection<string>();

        public DragDropDemo()
        {
            this.InitializeComponent();

            collection.Add("seek");
            collection.Add("stackoverflow");
            collection.Add("place");
            collection.Add("great");
            collection.Add("a");
            collection.Add("is");
            collection.Add("help");
            collection.Add("for");

            GridView1.ItemsSource = collection;

        }

    }

注意:说“文本应居中对齐”,并不是要在一个单元格中居中显示一个项目:

例如:

假设我们有一个gridview,每行的最大列数为5,我们的句子又是:

“ stackoverflow是寻求帮助的好地方”

此刻可以看到:

stackoverflow is a great place
to seek for help

但是我希望它看起来像这样:

stackoverflow is a great place
      to seek for help

1 个答案:

答案 0 :(得分:0)

我还没有看到您的xaml代码,但是我做了一个简单的代码示例,向您展示了如何使多行文本对齐居中。

<GridView>
        <GridViewItem Width="300">
            <TextBlock TextAlignment="Center" TextWrapping="WrapWholeWords">Also please keep in mind that, text should be aligned center.</TextBlock>
        </GridViewItem>
</GridView>

enter image description here