【发布时间】:2017-05-03 01:41:39
【问题描述】:
我正在为音乐目录的 XML API 创建一个 Windows WPF 接口。
所以在创建专辑、歌曲、播放列表等列表时,我创建了带有列的列表框(使用 Visual Studio,因为我没有 Windows 编程经验):
<Window x:Class="AmpacheWPF.Programacion"
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:AmpacheWPF"
mc:Ignorable="d"
Title="Programacion" Height="917.833" Width="1206.666">
<Grid>
<ComboBox x:Name="comboBox" HorizontalAlignment="Left" Margin="26,39,0,0" VerticalAlignment="Top" Width="120" SelectionChanged="comboBox_SelectionChanged"/>
<ListView x:Name="albums" HorizontalAlignment="Left" Height="146" Margin="26,99,0,0" VerticalAlignment="Top" Width="549" SelectionChanged="albums_SelectionChanged">
<ListView.View >
<GridView AllowsColumnReorder="False">
<GridView.ColumnHeaderContextMenu>
<ContextMenu/>
</GridView.ColumnHeaderContextMenu>
<GridViewColumn Header="Album"
DisplayMemberBinding="{Binding Album}" Width="120"/>
<GridViewColumn Header="Artist"
DisplayMemberBinding="{Binding Artist}"/>
<GridViewColumn Header="Year"
DisplayMemberBinding="{Binding Year}"/>
</GridView>
</ListView.View>
</ListView>
<Label x:Name="label" Content="Label" HorizontalAlignment="Left" Margin="160,54,0,0" VerticalAlignment="Top"/>
<ListView x:Name="Songs" HorizontalAlignment="Left" Height="257" Margin="26,286,0,0" VerticalAlignment="Top" Width="549" SelectionChanged="Songs_SelectionChanged">
<ListView.View>
<GridView>
<GridViewColumn Header="#"
DisplayMemberBinding="{Binding Pista}"/>
<GridViewColumn Header="Cancion"
DisplayMemberBinding="{Binding Titulo}"/>
<GridViewColumn Header="Compositor"
DisplayMemberBinding="{Binding Compositor}"/>
<GridViewColumn Header="Artista"
DisplayMemberBinding="{Binding Artist}"/>
<GridViewColumn Header="Tiempo"
DisplayMemberBinding="{Binding Tiempo}"/>
<GridViewColumn Header="Genero"
DisplayMemberBinding="{Binding Genero}"/>
</GridView>
</ListView.View>
</ListView>
</Grid>
它有列(专辑、艺术家、年份) 所有信息都由我的音乐服务器的 XML API 自动填充。
我有一个包含流派(拉丁语、莎莎舞等)的组合框
每次单击流派时,它都会在 ListView 专辑中加载信息,当我单击专辑时,它会填充 ListView 歌曲。
我试图做的没有成功的是修复列的大小(这是我唯一可以用“宽度”做的事情)并希望当文本不适合时列垂直扩展列宽(就像 Microsoft excel 一样)(所以我有 2 或 3 行),但请告诉我将它放在代码的哪个位置,因为我真的没有在 Windows 上编程的经验。
以下是我的代码的一些示例,以防有帮助:
public Programacion()
{
InitializeComponent();
serverurl = Loginwindow.serverurl;
string ampuser = Loginwindow.ampuser;
token = Loginwindow.token;
//obteniendo lista de tags
string tagurl = "http://" + serverurl + "/server/xml.server.php?action=tags&auth=" + token;
string[] tagarray = { tagurl, "1", "tag", "name", "albums" };//Creando array con datos a utilizar
tagsinfo = xmlcs2.Xmlparser(tagarray);//Llamando afuncion que lee XML
//Obteniendo total de espacios musicales contando el array
totalgenres = tagsinfo.GetUpperBound(0);
//Lennado ComboBox1
int g = Programacion.totalgenres;
for (int y = 0; y < g; y++)
{
comboBox.Items.Add(tagsinfo[y][1]); //
}
}
private void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int index = comboBox.SelectedIndex;
id = tagsinfo[index][0];
string totalalbums = tagsinfo[index][2];
//obteniendo lista de albums
string tagurl = "http://" + serverurl + "/server/xml.server.php?action=tag_albums&auth=" + token + "&filter=" + id;
string[] tagarray = { tagurl, totalalbums, "album", "name", "tracks", "artist", "year" };//Creando array con datos a utilizar
albumsinfo = xmlcs2.Xmlparser(tagarray);//Llamando afuncion que lee XML
//ordenando alfabeticamente
Sort(albumsinfo, 1);
//Lennado ListView Albums
albums.ItemsSource = null;
int g = Convert.ToInt32(totalalbums);
List<Albumlist> items = new List<Albumlist>();
for (int y = 0; y < g; y++)
{
if (albumsinfo[y][4] == "0")
{
items.Add(new Albumlist() { Album = albumsinfo[y][1], Artist = albumsinfo[y][3], Year = "" });
}
else
{
items.Add(new Albumlist() { Album = albumsinfo[y][1], Artist = albumsinfo[y][3], Year = albumsinfo[y][4], Id = albumsinfo[y][0] });
}
}
albums.ItemsSource = items;
}
提前感谢您的帮助。
【问题讨论】:
标签: c# wpf listview visual-studio-2015