我到处搜索,但我没有找到任何好的示例或教程。我有一个列表框,我为它制作了一个ItemTemplate:
XAML:
<ListBox x:Name="LB_Playlist" ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalAlignment="Left" Height="454" Margin="0,23,0,0" VerticalAlignment="Top" Width="264" Background="{x:Null}" BorderBrush="{x:Null}" BorderThickness="0" ItemTemplate="{DynamicResource PlayListItem}" ScrollViewer.VerticalScrollBarVisibility="Hidden">
<ListBox.Resources>
<DataTemplate x:Key="PlayListItem">
<Grid d:DesignWidth="127" d:DesignHeight="105" Width="128" Height="128">
<Label x:Name="L_PlayListName" Content="{Binding Path=PlayList_Name}" HorizontalAlignment="Stretch" Margin="16" Width="Auto" Height="Auto" Background="#26000000" Padding="0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center" FontFamily="BankGothic Lt BT"/>
</Grid>
</DataTemplate>
</ListBox.Resources>
</ListBox>
如何使用代码(动态)添加新项目每次使用不同的名称更改L_PlayListName内容?我需要创建一个新的类或什么?我有一个添加新项目的按钮。我怎么能这样做?
答案 0 :(得分:2)
首先在代码后面创建一个集合属性:
public ObservableCollection<string> PlayListNames { get; set; }
然后Bind
到ListBox.ItemsSource
:
<ListBox ItemsSource="{Binding PlayListNames}" ... />
稍微更改您的XAML:
<Label x:Name="L_PlayListName" Content="{Binding}" />
这将Bind
提供给每个项目的整个值,在这种情况下,这意味着该集合中的string
值之一。
最后,只需设置DataContext
的{{1}}即可。有几种方法可以做到这一点,最简单的(但不是最好的)是在Window
构造函数中执行此操作:
MainWindow.xaml.cs
那就是......如果你有任何问题,请告诉我。
答案 1 :(得分:1)
<Grid x:Name="LayoutRoot">
<ListBox Margin="10" ItemsSource="{Binding}"/>
</Grid>
在绑定前面的你可以写表格列的名称(数据库表)
private void Window_Loaded(object sender, RoutedEventArgs e)
{
BindData();
}
private void BindData()
{
DataSet dtSet = new DataSet();
using (connection = new SqlConnection(connectionString))
{
command = new SqlCommand(sql, connection);
SqlDataAdapter adapter = new SqlDataAdapter();
connection.Open();
adapter.SelectCommand = command;
adapter.Fill(dtSet, "Customers");
listBox1.DataContext = dtSet;
}
}
答案 2 :(得分:0)
如果您只是在播放列表中添加字符串,则应将模板编辑为以下内容
<DataTemplate x:Key="PlayListItem">
<Label x:Name="L_PlayListName" Content="{Binding}" />
</DataTemplate>
但是你应该使用ObservableCollection并使它变得简单和正确。