WPF DataGrid 数据绑定问题

手在键盘敲很轻 2020-12-18 03:43:14


<Window x:Class="CSTK.Library.DownLoad.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:CSTK.Library.DownLoad"
mc:Ignorable="d"
Title="下载中心" Height="542.406" Width="1016.225" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" MaxHeight="532.406" MaxWidth="1000" >
<Grid>
<Grid Margin="10,2,0,451" Background="Transparent" Height="50">
<TextBox BorderBrush="Black" Name="search_Word" FontSize="14" FontFamily="微软雅黑" Text="林" TextAlignment="Center" Width="100" Height="32" Padding="5" Margin="-50 0 0 8"/>
<Button BorderBrush="Black" FontSize="14" FontFamily="微软雅黑" Name="search" Margin="0,8,325,0" RenderTransformOrigin="0.211,-7.49" Click="Button_Click" HorizontalAlignment="Right" Width="89" Height="30" VerticalAlignment="Top">搜索</Button>
</Grid>
<Grid>
<DataGrid Margin="10,63,10,9" AutoGenerateColumns="True" Name="dg_Table" CanUserAddRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding Path=ID}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="歌曲名" Binding="{Binding Path=SongName}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="歌手" Binding="{Binding Path=SingerName}" Width="*"></DataGridTextColumn>
<DataGridTextColumn Header="专辑名" Binding="{Binding Path=AlbumName}" Width="*"></DataGridTextColumn>
<DataGridTemplateColumn Header="操作">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<Button Content="下载"></Button>
</StackPanel>
</DataTemplate>

</DataGridTemplateColumn.CellTemplate>

</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>

</Grid>
</Window>


后台代码

public class SongDetail {
public string ID { get; set; }
public string SongName { get; set; }
public string AlbumName { get; set; }
public string SingerName { get; set; }
}
System.Threading.Thread th = new System.Threading.Thread(() =>
{
var rst = HttpHelper.HttpPost(url, data, HttpHelper.cookie, "application/x-www-form-urlencoded; charset=UTF-8");
var root = JsonToEntity<Root>(rst);
ObservableCollection<SongDetail> songItems = new ObservableCollection<SongDetail>();
foreach (var song in root.song_list)
{
string name = song.songname;
var arr = song.songname.Split(new string[] { "<sup" }, StringSplitOptions.None);
if (arr != null && arr.Length > 1) name = arr[0];
song.songname = name;
var singer = song.singer.FirstOrDefault();
songItems.Add(new SongDetail() {ID=song.songmid,SongName=name,AlbumName=song.albumname,SingerName=singer==null?"":singer.name });
}
dg_Table.Dispatcher.Invoke(delegate() {
dg_Table.ItemsSource = songItems;
// dg_Table.GridLinesVisibility = DataGridGridLinesVisibility.All;
});
});
th.IsBackground = true;
th.Start();

看图,我声明的列有值了,这个正常,但是出现属性的列是什么情况,百度了半天没找到原因。
代码大概就这些了,最近在学习WPF,可能在将来工作中用的上。望各位大神帮忙!
...全文
7283 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
结帖,感谢楼上两位老哥
十八道胡同 2020-12-19
  • 打赏
  • 举报
回复
使用DataGrid的AutoGeneratingColumn事件,在生成列的时候过滤掉不需要的列 AutoGenerateColumns="True" AutoGeneratingColumn="gridWC_AutoGeneratingColumn"
private void gridWC_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
        {
            if (e.Column.Header.ToString()=="IsHasExpend"||
                e.Column.Header.ToString() == "FID"||
                e.Column.Header.ToString() == "ParientFID")
            {
                e.Cancel = true;//过滤列
            }
        }
ziqi0716 2020-12-19
  • 打赏
  • 举报
回复
AutoGenerateColumns="False"
  • 打赏
  • 举报
回复
我要的只有5个列啊,其它多出来的是怎么回事呢
gs0038 2020-12-18
  • 打赏
  • 举报
回复
看不懂你什么意思呢

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧