7

我是 Windows 应用程序开发的新手,并试图实现这样的显示:

Tag no:1 Tag no:2 Tag no:3 //屏幕左端

标签编号:4 标签编号:5 ...依此类推。

有些像这样:

在此处输入图像描述

我在 Windows 10 通用应用程序开发中这样做。

提前致谢。

我的 Xaml 代码:

 <StackPanel Orientation="Horizontal">
      <TextBlock Text="{x:Bind comment_tags}" />
 </StackPanel>

我的 C# 代码:

    public List<string> comments_tags = new List<string>();
    public MainPage()
    {
        this.InitializeComponent();
        for(int i =0; i < 20; i++)
        {
            comments_tags.Add("Tag no: " + i);
        }

     }

我尝试过的新方法:

    public List<Border> comment_tags = new List<Border>();

        for (int i = 0; i < 20; i++)
        {
            Border b_temp = new Border();
            b_temp.CornerRadius = new CornerRadius(3);
            b_temp.Background = new SolidColorBrush(Colors.Aqua);
            TextBlock t = new TextBlock();
            t.Text = "Tag no: " + i;
            t.Foreground = new SolidColorBrush(Colors.Aqua)
            b_temp.Child = t;
            comments_tags.Add(b_temp);
        }
4

2 回答 2

4

你处理标签的方法在这里不正确,你不想要一个文本框,你需要一个可以理解标签是什么以及如何处理它的控件。

看看这里这里,了解如何实现这一点。

或者最小的实现可能是

<ItemsControl ItemsSource="{Binding Items}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <StackPanel Orientation="Horizontal"/>
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>

        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Border BorderBrush="PowderBlue" CornerRadius="5" BorderThickness="2" Height="45" Margin="5" >
                    <TextBlock Text="{Binding}" VerticalAlignment="Center" Margin="5"/>
                </Border>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

后面的代码是

 public MainWindow()
    {
        InitializeComponent();
        Items = new[] {"ABC", "DEF"};
        this.DataContext = this;
    }
    public string[] Items
    { get; set; }
于 2015-07-07T09:41:46.417 回答
1

您不能将字符串列表直接绑定到 TextBox 控件。由于 TextBox 控件只显示一个字符串,因此可以将列表的所有项目添加到一个字符串属性中,并且该属性应该用于将文本绑定到 TextBox。

您可以将 Text 绑定到 TextBox,如下所示:

XAML

 <StackPanel Orientation="Horizontal">
      <TextBlock Text="{Binding TBProperty}" />
 </StackPanel>

C#

 public List<string> comments_tags = new List<string>();

        public string TBProperty
        {
            get;
            set;
        }

        public MainWindow()
        {
            InitializeComponent();

            this.DataContext = this;

            for (int i = 0; i < 20; i++)
            {
                comments_tags.Add("Tag no: " + i);
            }

            foreach (string comment in comments_tags)
            {
                TBProperty += comment + " ";
            }

        }
于 2015-07-07T08:30:59.827 回答