我有一个带有ListView的Metro App,其中包含以下定义:
<ListView Grid.Row="0" x:Name="lv" CanDragItems="True" CanReorderItems="True" IsTabStop="True" SelectionMode="Extended" VirtualizingStackPanel.VirtualizationMode="Recycling">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <Grid Width="{Binding ElementName=lv,Path=ActualWidth}">
                        <Grid.RowDeFinitions>
                            <RowDeFinition/>
                            <RowDeFinition/>
                        </Grid.RowDeFinitions>

                        <Grid Grid.Row="0">
                            <Grid.ColumnDeFinitions>
                                <ColumnDeFinition Width="*"/>
                                <ColumnDeFinition Width="65"/>
                            </Grid.ColumnDeFinitions>

                            <TextBlock Grid.Column="0" x:Name="tb1" Foreground="{StaticResource SecondaryColourBrush}" HorizontalAlignment="Stretch"/>

                            <TextBlock Grid.Column="4" x:Name="tb2" Foreground="{StaticResource SecondaryColourBrush}" HorizontalAlignment="Right"/>

                        </Grid>

                        <Grid Grid.Row="1">
                            <Grid.ColumnDeFinitions>
                                <ColumnDeFinition Width="*"/>
                                <ColumnDeFinition Width="Auto"/>
                                <ColumnDeFinition Width="65"/>
                            </Grid.ColumnDeFinitions>

                            <TextBlock Grid.Column="0" x:Name="tb3" Foreground="{StaticResource QuadColourBrush}" HorizontalAlignment="Stretch" TextTrimming="WordEllipsis"/>

                            <TextBlock Grid.Column="1" x:Name="tb4" Foreground="{StaticResource QuadColourBrush}" HorizontalAlignment="Right"/>

                        </Grid>

                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>

当ListView选择了一个项目时,我想将tb1和tb2的前景更改为白色.我该怎么做呢?

我尝试重写Themed Brushes和VisualStateGroup SelectionStates for Selected,但没有帮助.一个工作代码示例将不胜感激.

最后解决了这个问题,感谢这篇文章给了我这个想法:

http://blog.davemdavis.net/2012/11/12/controlling-the-datatemplate/

创建了一个BooleanToColourConverter

public sealed class BooleanToColourConverter : IValueConverter
{
    public object Convert(object value,Type targettype,object parameter,string language)
    {
        return (value is bool && (bool)value) ? AppResources.TertiaryColourBrush : AppResources.PrimaryColourBrush;
    }

    public object ConvertBack(object value,string language)
    {
        return value is SolidColorBrush && ((SolidColorBrush)value).Color == AppResources.TertiaryColourBrush.Color;
    }
}

在App.xaml中添加了此内容

<common:BooleanToColourConverter x:Key="BooleanToColourConverter"/>

然后像这样使用它:

Foreground="{Binding Tag,Converter={StaticResource BooleanToColourConverter},Mode=TwoWay,RelativeSource={RelativeSource Mode=TemplatedParent}}"

windows-runtime – Metro App ListView SelectedItem选择VisualState的更多相关文章

  1. ios – 在React Native中设置ListView的高度

    我需要设置ListView的宽度和高度.当设置宽度按预期工作时,设置高度无效,ListView总是伸展到屏幕的几乎底部.我用这种方式在render方法中创建ListView:这是它的风格:我还尝试通过此命令在方法中设置其高度:当我尝试使用此命令设置宽度时,它可以工作.但设定高度什么都不做.如何将ListView的高度设置为所需的值?

  2. Android ListView中的弹出菜单问题

    )方法并把方法在您的适配器类中.注意:act是在创建构造函数适配器时必须绑定的Activity,例如:在Activity中,您可以编写代码:

  3. android – 在listview中添加viewpager作为滚动标题

    我试图在列表标题中添加Viewpager(使用支持库4),但它没有显示任何内容.这是我的代码请帮忙.它将在列表标题中不作为项目,因此它不应该是一个问题.解决方法listadapter之后的listview页眉和页脚显示.如果你尝试setadapter,并且看不到viewpager.检查viewpager的宽度和高度.如果viewpager的宽度或高度值为0.在viewgroup中创建LienarL

  4. android – Listview滚动错误5.1

    刚注意到ListView中一个非常奇怪的错误,似乎只能重现5.1,我真的很想知道没有人提起它.很容易重现:查找具有足够项目的ListView,滚动到列表的3/4,现在快速向上滚动,您会注意到ListView滚动一直到底部!现在IMO这是一个非常严重的错误,我想尽快找到解决方法/修复,所以任何人都有一个?更新:ListView.java没有从SDK21更改,但AbsListView.java没有.解决方法您可以使用回收站视图而不是列表视图,因为Google可能不再支持它.试试YouTube上的幻灯片视频.它

  5. android – 在ListView中禁用项目焦点

    当我点击它时,如何从ListView中的Item禁用焦点,以便没有关注点击?解决方法以下是禁用ListView焦点的答案.在适配器中覆盖isEnabled方法并返回false.

  6. Android – 从ListView中删除项目时的动画

    我在一个活动中有一个ListView.在每个列表项中都有一个文本和一个CheckBox.单击CheckBox,我想从ListView中删除该项目,并希望添加一个动画,如向下滑动或淡出,然后删除.有帮助吗?

  7. android – 如何在ListView中正确使用TextSwitcher?

    ),然后播放动画.text2到text1的更改正确发生.我的理解原因如下–在显示text2之前,itemTime的所有视图都被删除,因此它被重新创建,这就是为什么一些其他值被显示为秒的原因.但为什么它显示其他记录的价值呢?

  8. android – 带复选框的ListView项目 – 如何删除复选框涟漪效应?

    我有一个带有项目的ListView包含一个复选框和一些其他元素.问题是,当我点击Android5设备上的列表项时,我看起来像这样:我不希望在复选框周围产生涟漪效应.我怎么能实现这一点?

  9. android – 如何在ListView中的同一行放置多个项目?

    我有一个链接到自定义适配器的项目的ArrayList.这些项目按字母顺序排列.我希望我的ListView在ListView的每一行上最多有四个项目,并按字母顺序分隔行.例如:[嗨][医院][酒店][热点][屋][不可能][不大可能]因此,多个项目将位于ListView的同一行.有没有办法在自定义Adapter类的getView()方法中使用位置变量来实现这一目的?如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  10. android – 允许用户选择SD卡上的文件夹

    我正在寻找一种方法,允许用户按下按钮浏览SD卡的内容,然后选择一个文件夹,其路径将返回给应用程序.类似于在Windows上启动“浏览…”

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部