更改ListView的前景色
我真的需要你的帮助,因为我找不到解决问题的办法 我正在开发一个通用的Windows10应用程序,里面有一个时间表(ListView) 现在,我想在时间表上标出这个项目,它目前正在运行。例如,有一个项目从星期一07:00到13:00,现在是星期一12:00,因此该项目应将其颜色更改为红色(或类似于标记的颜色) 我现在已经尝试了几种方法,到目前为止,代码如下: 首先,这里是我的ListView的xaml代码:更改ListView的前景色,listview,windows-10,listviewitem,windows-10-universal,windows-10-mobile,Listview,Windows 10,Listviewitem,Windows 10 Universal,Windows 10 Mobile,我真的需要你的帮助,因为我找不到解决问题的办法 我正在开发一个通用的Windows10应用程序,里面有一个时间表(ListView) 现在,我想在时间表上标出这个项目,它目前正在运行。例如,有一个项目从星期一07:00到13:00,现在是星期一12:00,因此该项目应将其颜色更改为红色(或类似于标记的颜色) 我现在已经尝试了几种方法,到目前为止,代码如下: 首先,这里是我的ListView的xaml代码: <RelativePanel Name="rpStundenplan">
<RelativePanel Name="rpStundenplan">
<ListView x:Name="lstViewStundenplan" HorizontalContentAlignment="Stretch" SelectionChanged="lstViewStundenplan_SelectionChanged">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<RelativePanel Grid.Row="0" Grid.Column="0">
<RelativePanel Name="rpTag" Width="100">
<TextBlock Name="txtTag" FontSize="16" Text="{Binding Tag_lang}" TextWrapping="Wrap" RelativePanel.AlignHorizontalCenterWithPanel="True" />
</RelativePanel>
<RelativePanel Name="rpZeit" Width="auto" RelativePanel.Below="rpTag" RelativePanel.AlignHorizontalCenterWith="rpTag">
<TextBlock Name="txtZeitVon" FontSize="14" Text="{Binding Beginn}" VerticalAlignment="Center"/>
<TextBlock Name="txtZeitBis" FontSize="14" Text="{Binding Ende}" VerticalAlignment="Center" RelativePanel.RightOf="txtZeitVon" Margin="5,0,0,0" />
</RelativePanel>
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</RelativePanel>
抛出例外:
{“无法将类型为'CampusAppHSHof.Classes.Stundenplan'的对象强制转换为类型为'Windows.UI.Xaml.Controls.ListViewItem'。”
我希望代码足够你重现这个问题。。。我试图使它尽可能短…通常我们不直接操作ListView的项,常用的方法是将项添加到
ObservableCollection
并将ListView的ItemSource属性设置为绑定到ObservableCollection
根据问题,lstviewstudenplan.Items
获取用于生成ListView
内容的集合。在项目中,集合中的项是Stundenplan
type。所以你得到了解释:
{“无法将类型为'CampusAppHSHof.Classes.Stundenplan'的对象强制转换为类型为'Windows.UI.Xaml.Controls.ListViewItem'。”
可以使用获取与指定项对应的容器。您可以将其强制转换为ListViewItem
类型
顺便说一下,在aktuellezit
方法中,代码ListView lstView=newlistview();lstView=lstViews平面图代码>semms它是冗余的
例如:
public void AktuelleZeit()
{
for (int i = 1; i < lstViewStundenplan.Items.Count; i++)
{
ListViewItem Item = (lstViewStundenplan).ContainerFromItem(lstViewStundenplan.Items[i]) as ListViewItem;
Item.Foreground = new SolidColorBrush(Windows.UI.Colors.Red);
}
}
public void aktuellezit()
{
对于(int i=1;i
如果没有a,很难重现问题。请发布一个完整的样本。你好@User0123456789!谢谢你的回复!我会尽我最大的努力编辑我的问题,使其最小化,完整和可验证!我是新来的,非常感谢你的帮助,如果我又做错了,请毫不犹豫地告诉我……嗨@Jayden Gu!非常感谢你的帮助!你可以想象,我是uwp的新手,在学校里只有一点c#。。。我想我会更仔细地观察可观察的集合。。。我尝试了您针对我的问题的解决方案,现在行项目中出现另一个错误。前台=新SolidColorBrush(Windows.UI.Colors.Red)<代码>因为该项似乎为空。我做错什么了吗?看来你的案子没有错。我已经上传了我的样品,你可以下载
public void AktuelleZeit()
{
//markiert die aktive Vorlesung
ListView lstView = new ListView();
lstView = lstViewStundenplan;
for (int i = 1; i < lstView.Items.Count; i++)
{
ListViewItem Item = (ListViewItem)lstViewStundenplan.Items[i];
Item.Foreground = new SolidColorBrush(Windows.UI.Colors.Red);
}
}
ListViewItem Item = (ListViewItem)lstViewStundenplan.Items[i];
public void AktuelleZeit()
{
for (int i = 1; i < lstViewStundenplan.Items.Count; i++)
{
ListViewItem Item = (lstViewStundenplan).ContainerFromItem(lstViewStundenplan.Items[i]) as ListViewItem;
Item.Foreground = new SolidColorBrush(Windows.UI.Colors.Red);
}
}