更改ListView的前景色

更改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">

我真的需要你的帮助,因为我找不到解决问题的办法

我正在开发一个通用的Windows10应用程序,里面有一个时间表(ListView)

现在,我想在时间表上标出这个项目,它目前正在运行。例如,有一个项目从星期一07:00到13:00,现在是星期一12:00,因此该项目应将其颜色更改为红色(或类似于标记的颜色)

我现在已经尝试了几种方法,到目前为止,代码如下:

首先,这里是我的ListView的xaml代码:

<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);
    }
}