theme 文件

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:WpfProjecrt.Hpcontrol">
    <DataTemplate x:Key="HumanMessageDataTemplate">
  <TextBlock Text="hello world"
  Margin="0,0,0,0"
  HorizontalAlignment="Right"
  Foreground="#4d4d4d"
  TextWrapping="Wrap"
  FontSize="16"
  FontFamily="楷体"/>
  </DataTemplate>

  <DataTemplate x:Key="DriverMessageDataTemplate">

  <Grid HorizontalAlignment="Left">
    <Grid Background="#ffffff">
      <local:TestControl></local:TestControl>
    </Grid>
  </Grid>
  </DataTemplate>

</ResourceDictionary>

2, 将theme 文件添加到App.xaml文件

<Application x:Class="WpfProjecrt.App"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:WpfProjecrt"
  StartupUri="MainWindow.xaml">
  <Application.Resources>
    <ResourceDictionary>

    <ResourceDictionary.MergedDictionaries>
      <ResourceDictionary Source="/themes/ThemeList.xaml"/>

      </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
</Application>

3, 添加listview 的选择器 ListDataTemplateSelector

public class ListDataTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
      DataTemplate dt= App.Current.Resources["DriverMessageDataTemplate"] as DataTemplate;
      return dt;

      // return App.Current.Resources["DriverMessageDataTemplate"] as DataTemplate;
    }
}

4, 使用 现实的xml文件

<Window x:Class="WpfProjecrt.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfProjecrt"
xmlns:local2="clr-namespace:WpfProjecrt.Hpcontrol"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"></RowDefinition>
<RowDefinition></RowDefinition>
</Grid.RowDefinitions>

<StackPanel Grid.Row="0">
<Image x:Name="mg" Height="100" Width="100"></Image>
<TextBlock Name="tb" >open web page</TextBlock>
  <ComboBox x:Name="cb" DisplayMemberPath="name" ItemsSource="{Binding mm}"></ComboBox>
</StackPanel>

  <ListView ItemsSource="{Binding mm}" ItemTemplateSelector="{Binding lss}" Grid.Row="1" x:Name="lw" Padding="0,16,0,0">
  </ListView>
</Grid>
</Grid>
</Window>

对应后面的cs 文件

public class Meal
{
  public string name
  {
    set;
    get;
  }
}

public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();
    this.Loaded += MainWindow_Loaded;
    this.DataContext = this;
    // cb.ItemsSource = mcollection;
    //lw.ItemsSource = mcollection;
    //lw.ItemTemplateSelector = ListViewDataTemplateSelector;
}

private void MainWindow_Loaded(object sender, RoutedEventArgs e)
{
  var link = new Hyperlink()
  {
    NavigateUri = new Uri("https://www.baidu.com"),
    Inlines = { new Run() { Text = "baidu" } }
  };
    link.Click += Link_Click;
    tb.Inlines.Add( link );

    for(int i=0; i<100; i++)
    {
      Meal m = new Meal();
      m.name = i.ToString();
      mcollection.Add(m);
    }
    // mg.Source=new ImageSource()
    BitmapImage image = new BitmapImage(new Uri("./imgs/123.jpg", UriKind.Relative));
    mg.Source = image;

  }
  private ObservableCollection<Meal> mcollection = new ObservableCollection<Meal>();
  public ObservableCollection<Meal> mm
  {
    get
    {
      return mcollection;
    }
  }
  public ListDataTemplateSelector lss
  {
    get
    {
      return ls;
    }
  }
  private ListDataTemplateSelector ls = new ListDataTemplateSelector();
  private void Link_Click(object sender, RoutedEventArgs e)
  {
  System.Diagnostics.Process.Start(((Hyperlink)sender).NavigateUri.ToString());
  }

}

总结, xml 文件绑定属性最好用CLR的包装器包装一下,

否则可能包装不上。

wpf 中 theme 的使用 和 listview 模板的使用.的更多相关文章

  1. 在WPF中自定义控件(3) CustomControl (上)

    原文:在WPF中自定义控件(3) CustomControl (上) 在WPF中自定义控件(3) CustomControl (上)                              周银辉 ...

  2. WPF 显示文件列表中使用 ListBox 变到ListView 最后使用DataGrid

    WPF 显示文件列表中使用 ListBox 变到ListView 最后使用DataGrid 故事背景: 需要检索某目录下文件,并列出来,提供选择和其他功能. 第一版需求: 列出文件供选择即可,代码如下 ...

  3. WPF 中获取DataGrid 模板列中控件的对像

    WPF 中获取DataGrid 模板列中控件的对像 #region 当前选定行的TextBox获得焦点 /// <summary> /// 当前选定行的TextBox获得焦点 /// &l ...

  4. WPF中的数据模板(DataTemplate)(转)

    原文地址 http://www.cnblogs.com/zhouyinhui/archive/2007/03/30/694388.html WPF中的数据模板(DataTemplate)        ...

  5. WPF中的ControlTemplate(控件模板)(转)

    原文地址 http://www.cnblogs.com/zhouyinhui/archive/2007/03/28/690993.html WPF中的ControlTemplate(控件模板)     ...

  6. WPF中通过代码定义模板

    WPF中可以再XAML中定义模板,也可以通过C#代码定义模板,通过代码可能更清楚的看清其逻辑,而且代码的好处就是可以随时动态的去操作,而在XAML中定义的一般都是静态的. //控件呈现的显示内容1(这 ...

  7. wpf中的数据模板

    wpf中的模板分为数据模板和控件模板,我们可以通过我们自己定制的数据模板来制定自己想要的数据表现形式.例如:时间的显示可以通过图片,也可以通过简单数字表现出来. 例如: (1)先在Demo这个命名空间 ...

  8. WPF中ListBox /ListView如何改变选中条背景颜色

    适用ListBox /ListView WPF中LISTVIEW如何改变选中条背景颜色 https://www.cnblogs.com/sjqq/p/7828119.html

  9. WPF中的数据模板(DataTemplate)

    原文:WPF中的数据模板(DataTemplate) WPF中的数据模板(DataTemplate)                                                   ...

随机推荐

  1. 题解 SP3591 PATHEADS - Patting Heads

    类似桶排 先看有多少头奶牛抽出这个数 再看这个数的奶牛能拍多少人的头(别忘了-1,自己不能拍自己) 最后根据输入输出 110ms #include<bits/stdc++.h> using ...

  2. 团队开发day03

    完成安卓的登录和注册界面的设计,进行服务器端的开发,设计javabean实体 映射,零售商 ,商品,品牌商,订单类的构建 遇到问题:安卓发起网络请求,客户端回应请求,数据处理设置. 使用传统的方法 / ...

  3. Map集合笔记

    一.Map集合的特点 Map集合是一个双列集合 Map中的元素,key和value的数据类型可以相同,也可以不同. Map中的元素,key是允许重复的,value是可以重复的 Map中的元素,key和 ...

  4. 7Java基础补充

    1.标准Java bean写法 包括:private修饰的成员变量.getter和setter以及无参和有多个参数的有参构造方法 2.String原理 String底层是字节数组byte[]. Str ...

  5. 医疗器械软件产品经理必读的法规及标准-YY/T0664(一)

    医疗器械软件产品经理必读的法规及标准-YY/T0664(一) 医疗器械软件的产品经理,需要熟读医药行业标准,在软件设计开发的整个生存周期过程中,我们需要根据<YY/T 0664 医疗器械软件 软 ...

  6. 网络损伤仪WANsim的队列深度功能

    什么是队列深度 在网络损伤仪WANsim中,队列是指一个用于缓存报文的缓冲池.深度是指缓冲池可以存储的最大数据量.当WANsim接受的报文超出了带宽限制的量时,溢出的报文会进入队列中. 我们可以在WA ...

  7. 测试龙芯 LoongArch .NET之 使用 FastTunnel 做内网穿透远程计算机

    龙芯3A5000 已经上市,与龙芯3A5000配套的三大编译器GCC.LLVM.GoLang和三大虚拟机Java.JavaScript..NET均已完成开发,从老伙计哪里搞来一台3A5000 机器,安 ...

  8. 【LeetCode】142. 环形链表 II

    142. 环形链表 II 知识点:链表:set:快慢指针 题目描述 给定一个链表,判断链表中是否有环. 给定一个链表,返回链表开始入环的第一个节点. 如果链表无环,则返回 null. 为了表示给定链表 ...

  9. P7003 [NEERC2013]Hack Protection

    P7003 [NEERC2013]Hack Protection 题意 给定一个序列 \(a\) ,求有多少个区间满足区间内的数的异或和等于与的和的值. 思路 首先我们求一个异或前缀和 \(s\),对 ...

  10. shell常识

    1 #!/bin/bash 2 : << ! 3 #使用变量 4 your_name="qinjx" 5 echo $your_name 6 echo ${your_n ...