使用ListBox时通常会借助ItemTemplate帮助我们实现更复杂多样的样式显示,体现了Xaml的灵活。如何动态改变变ListBox的样式,实现类似电脑资源管理器中列表显示和图标显示形式的替换。简单的做法就是将DataTemplate 定义在<phone:PhoneApplicationPage.Resources>,通过C#代码,动态改变ListBox的DataTemplate。

简单实例xaml代码

<phone:PhoneApplicationPage.Resources>
<DataTemplate x:Key="DataTemplate1">
<Grid>
<StackPanel Orientation="Vertical">
<TextBlock FontSize="40" Foreground="Yellow" Text="{Binding Text1}"></TextBlock>
<TextBlock FontSize="40" Foreground="Yellow" Text="{Binding Text2}"></TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
<DataTemplate x:Key="DataTemplate2">
<Grid>
<StackPanel Orientation="Horizontal">
<TextBlock FontSize="60" Foreground="Red" Text="{Binding Text1}"></TextBlock>
<TextBlock FontSize="60" Foreground="Red" Text="{Binding Text2}"></TextBlock>
</StackPanel>
</Grid>
</DataTemplate>
</phone:PhoneApplicationPage.Resources>

C#代码,借助Resources["Key"]读取资源中的内容

ObservableCollection<TextCol> TextCols = new ObservableCollection<TextCol>()
{
new TextCol(){ Text1="Text1",Text2="Text2" },
new TextCol(){ Text1="Text3",Text2="Text4" },
new TextCol(){ Text1="Text5",Text2="Text6" },
new TextCol(){ Text1="Text7",Text2="Text8" },
};
DataTemplate template;
template = Resources["DataTemplate1"] as DataTemplate;
list.ItemTemplate = template;
list.ItemsSource = TextCols;

通过上边简单的几行代码,只要改变Resources中的key值,就能灵活的改变ListBox的样式。

如果样式的定义代码过长,可以通过动态加载Xaml的方式,将DataTemplate的定义放在xaml文件中

注:需有

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

两个命名空间,已字符串的形式加载只需要第一个

StreamResourceInfo sri = Application.GetResourceStream(uri);
//uri xaml文件路径
using (StreamReader stream = new StreamReader(sri.Stream))
{
temp = stream.ReadToEnd();
}
XamlReader.Load(temp); //返回object对象

Windows Phone 动态改变ListBox样式的更多相关文章

  1. js动态改变css伪类样式

    首先我们来看下页面上需要实现的基本效果,如下图所示: 因此我们可以使用如下js代码来试试看,是否能使用js改变伪类?如下代码所示: $(function() { $('.listnav li').cl ...

  2. 微信小程序,动态改变样式

    小程序目前没有修改样式api,但是可以利用数据绑定实现动态改变样式,可以用view标签模拟page然后改变view标签的样式,以下案例演示了如果改变page背景颜色: <view class=& ...

  3. vue点击时动态改变样式 ------- 最简单的方法

    vue点击时动态改变样式 template中 <li :class="{ active:index==isActive }" @click="changeValue ...

  4. 动态改变伪元素样式的方(用:after和:before生成的元素)

    自己查资料总结的两种方法 一.纯css改变 a:hover:before{left:-20%;} a:hover:after{right:-20%;} a:before{ left:-100%; } ...

  5. 动态改变actionbar上menu的图标

    工作中遇到了一个需求是,在滚动的时候让actionbar上的图标进行变色.实现后在这里总结下思路. 一.先在主题中定义好Actionbar的style <style name="App ...

  6. WPF中利用后台代码实现窗口分栏动态改变

    在WPF中实现窗口分栏并能够通过鼠标改变大小已经非常容易,例如将一个GRID分成竖排三栏显示,就可以将GRID先分成5列,其中两个固定列放GridSplitter. <Grid Backgrou ...

  7. WPF动态改变主题颜色

    原文:WPF动态改变主题颜色 国内的WPF技术先行者周银辉曾介绍过如何动态改变应用程序的主题样式,今天我们来介绍一种轻量级的改变界面风格的方式--动态改变主题色. 程序允许用户根据自己的喜好来对界面进 ...

  8. winform展示Unity3D文件(支持动态改变文件路径)

    winform下展示Unity3D文件可以支持对Unity3D实现的模块进行包装,以及在其他的项目中需要展示Unity3D的界面时候,恰到适宜地进行打开展示,这里我展示如何使用winform打开Uni ...

  9. javascript改变style样式和css样式

    转载 在很多情况下,都需要对网页上元素的样式进行动态的修改.在JavaScript中提供几种方式动态的修改样式,下面将介绍方法的使用.效果.以及缺陷. 1.使用obj.className来修改样式表的 ...

随机推荐

  1. SCOM2012端口需求

    Agent push requirements (including firewall ports): The account being used to push the agent must ha ...

  2. Webx学习(一)

    什么是webx Webx3_Guide_Book中是这样介绍的: Webx是一套基于Java Servlet API的通用Web框架. Webx致力于提供一套极具扩展性的机制.来满足Web应用不断变化 ...

  3. java 十六进制数的转换

    今天晚上做了一道java基础题,题目看起来简单,但是实现起来却花了我近两个小时的时间,认真的做这道题,你会发现它特别考你的基本功.有兴趣的可以试一下哦. 题目: 请用此语言编写如下函数,采用自己的算法 ...

  4. LINUX SHELL条件判断

    算术运算的条件判断 [] [[]]: -eq -ne -lt -le -gt -ge (( )):><>=<== [root@monitor ~]# if (( 2 == 3) ...

  5. 打造强大的BaseModel(1):让Model自我描述

    前言 从事iOS开发已经两年了,从一无所知到现在能独立带领团队完成一系列APP的开发,网络上的大神给了我太多的帮助.他们无私地贡献自己的心得和经验,写出了一篇篇精美的文章.现在我也开始为大家贡献自己的 ...

  6. 谈谈MVVM和链式网络请求架构

    前言 前一段时间一直在学习iOS的架构.为什么呢? 公司的架构一直是MVC,当我们正式上线的时候,项目已经有了超十万行代码.主要的VC一般都有2000行代码以上. 关键是,目前版本我们只做了三分之一的 ...

  7. Asp.Net 之 基本控件FileUpload上传控件

    1.前台代码: <asp:FileUpload ID="FileUpload" runat="server" /> <asp:Button I ...

  8. 在IOS中 NSRange类详解

    NSRange的定义 typedef struct _NSRange { NSUInteger location; NSUInteger length; } NSRange; NSRange是一个结构 ...

  9. SurfaceView的使用

    1.概念 SurfaceView是View类的子类,可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图视图.它的特性是:可以在主线程之外的 线程中向屏幕绘图上.这样可以避免画图任务繁重 ...

  10. stitching detail输出的dot图含义

    如果利用opencv里面提供的stitching detail的话. 输入参数: stitching_detail --save_graph a.dot 1.png 2.png 其中a.dot 文件中 ...