我是Windows应用开发的新手,并尝试实现这样的显示:
标签号码:1标签号码:2标签号码: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);
}
答案 0 :(得分:3)
这里处理标签的方法不正确,你不需要这里的文本框,你需要一个能够理解标签是什么以及如何处理它的控件。
或最小的实施可能是
<ItemsControl ItemsSource="{x:Bind 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; }
答案 1 :(得分: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 + " ";
}
}