如何解决在WPF中将子级设置为以编程方式创建的对象
正如标题中所述,我创建了一个滚动查看器以查看x文件夹中的所有文件。
string filesLocation = folderLocation + "\\Files";
string[] allFilesArray = Directory.GetFiles(@filesLocation);
//int fileNumber = 0;
int MarginTop = 0;
foreach (var file in allFilesArray)
{
Border fileBorder = new Border
{
Margin = new Thickness(0,MarginTop,0),Height = 20,Background = Brushes.Transparent,BorderBrush = (SolidColorBrush)new BrushConverter().ConvertFromString("#f333"),BorderThickness = new Thickness(0,1),HorizontalAlignment = System.Windows.HorizontalAlignment.Left,VerticalAlignment = System.Windows.VerticalAlignment.Top,Name = file
};
System.Windows.Controls.Label fileName = new System.Windows.Controls.Label
{
Foreground = (SolidColorBrush)new BrushConverter().ConvertFromString("#f333"),Padding = new Thickness(3),Content = file,Name = file + ":FILE_LABEL"
};
filesGrid.Children.Add(fileBorder);
MarginTop += 20;
}
filesCant.Content = "Files: " + allFilesArray.Length;
这是我的WPF Xaml代码,我想在其中插入边框:
<Border BorderBrush="#f555" BorderThickness="1" Margin="5,5,5" Grid.Row="3" Grid.ColumnSpan="2" Grid.Column="1">
<Grid>
<Border BorderBrush="#f555" Height="30" Margin="-1,-1,-1" VerticalAlignment="Bottom" BorderThickness="1">
<Label Content="FIles: " Foreground="#f555" x:Name="filesCant"/>
</Border>
<Border BorderBrush="#f555" Height="20" Margin="-1,-1" VerticalAlignment="Top" BorderThickness="1">
<Label Content="Files" Padding="0" Foreground="#f555" Margin="5,0"/>
</Border>
<ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" Margin="0,20,30">
<Grid x:Name="filesGrid">
</Grid>
</ScrollViewer>
</Grid>
</Border>
但这是问题所在。我希望fileName标签是fileBorder的子级,但是我不能,因为当我添加
fileBorder.Children.Add(fileLabel);
我明白了
“边界”没有为“子项”定义,也没有找到名为“子项”的可访问方法,该方法接受类型为“边界”的第一个参数。 (您是否缺少程序集引用?)
我的代码正在使用System.Windows.Controls和System.Windows.Forms。有什么方法可以将标签作为子项添加到边框吗?
解决方法
边界控件只有一个Child,而没有多个子项。
您可以通过将边框的子级设置为StackPanel并为其添加标签来创建所需的效果。
但是,您错过了WPF的关键功能之一-模板化。将allFilesArray设置为具有适当ItemTemplate的ItemsControl(例如ListBox或ListView)的项目源。然后,您可以通过将该控件放在边框内来创建UI。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。