WPF怎么从后台页面替换前台页面的控件模板(ItemTemplate)

作者&投稿:种枝 (若有异议请与网页底部的电邮联系)
WPF怎么寻找在ItemTemplate内部的各种控件~

看得出你的意思,你使用了mvvm模式,然后希望在viewmodel内部切换前端的DataTemplate。因为viewmodel理论上是不引用前端的,所以你肯定无法访问前端任何一个DataTemplate。所以你可以这样做:
1. 把你需要在ViewModel中切换的DataTemplate切换到程序的资源字典中,资源字典也就是wpf的ResourceDictionary,你的ViewModel是可以访问到的。
2. 在ViewModel中设置一个String类型的属性,例如SelectedTemplate,用于之后的模板切换。
3. 在你前端的ItemTemplate位置绑定这个SelectedTemplate属性,但你需要一个Converter来辅助样式的切换。

listview后台绑定数据集合,根据集合中某字段不同使用不同ItemTemplate
根据楼主的问题我根据不同情况给出不同方案:(方便起见,我拿listbox做例子)
1. 集合中某字段不同是指集合中每个实体对象的这一字段统一都发生改变:
我的思路是首先创建一个集合类,listbox的itemtemplate绑定集合值通过转换器拿到想要的DataTemplate
页面的资源:
















前台:

后台:
public class People
{
public bool IsTemp1 { get; set; }
public string Name { get; set; }
}


public class PeopleList
{
public ObservableCollection pList { get; set; }
}


转换器类:
public class TempConverter:IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
List datalist = (List)value;


Window1 window =new Window1();
DataTemplate template = new DataTemplate();
if (datalist[0].IsTemp1 == true)
{
template = window.Resources["temp1"] as DataTemplate;
}
else
{
template = window.Resources["temp2"] as DataTemplate;
}


return template; }
。。。
第二种情况:集合中某字段不同是指集合中每个实体对象的这一字段不同时发生改变:
那我建议只建立一个datatemplate。里面的内容可以放两套:












然后每套的显示绑定该属性,通过转换器转换成可见性即可。

看得出你的意思,你使用了mvvm模式,然后希望在viewmodel内部切换前端的DataTemplate。因为viewmodel理论上是不引用前端的,所以你肯定无法访问前端任何一个DataTemplate。所以你可以这样做:

  1. 把你需要在ViewModel中切换的DataTemplate切换到程序的资源字典中,资源字典也就是wpf的ResourceDictionary,你的ViewModel是可以访问到的。

  2. 在ViewModel中设置一个String类型的属性,例如SelectedTemplate,用于之后的模板切换。

  3. 在你前端的ItemTemplate位置绑定这个SelectedTemplate属性,但你需要一个Converter来辅助样式的切换。

    <ListBox ItemTemplate ="{Binding Path=SelectedTemplate, Converter={StaticResource StringToDataTemplateConverter}}">

  4. 这个Converter你可以这么写:

    public class StringToDataTemplateConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return InternalConvert(value, targetType, parameter);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            throw new NotImplementedException();
        }

        public object InternalConvert(object value, Type targetType, object parameter)
        {
            if(value == null)
            {
                return null;
            }

            var resources = Application.Current.Resources.MergedDictionaries.ToList();

            foreach (var dict in resources)
            {
                foreach (var objkey in dict.Keys)
                {
                    if (objkey.ToString() == value.ToString())
                    {
                        return dict[objkey] as DataTemplate;
                    }
                }
            }

            return null;
        }
    }
    这样一来前端的ItemTemplate就可以和ViewModel的SelectedTemplate完成绑定,你更改SelectedTemplate的值,你的Converter就会在资源字典中查找对应的DataTemplate了。



pf表示什么意思
1. "pf"作为计算机术语,通常代表"PageFile",即页面文件,它是操作系统用来模拟物理内存的一个文件,当物理内存不足时,系统会使用硬盘上的页面文件来扩展内存容量。2. 在网络交流中,"pf"可作为"佩服"的缩写。当用户对某人的行为或成就感到钦佩时,他们可能会在网络聊天或评论中使用"pf"来表达这种...

pf文件怎么打开
pf格式图标如下:pf文件是什么以及pf文件怎么打开详情如下:PF文件摘要我们有二个与PF文件相关的已知软件程序(通常是由SmithMicroSoftware开发的称为SmithMicroStuffItDeluxe的软件),它们可以归类为二种主要文件类型。通常,这些文件被视为PrivateFile格式。在大多数情况下,这些文件被视为CompressedFiles,但...

电脑如何在后台操作,后台是什么呢,如何才能打开后台?谢谢老师告知。_百 ...
如果要后台操作的话,⽅法⽐较多,但是 总体可以分为两类: 1.员⼯同意你远程操作那台电脑 2.员⼯不知道你远程操作那台电脑 对于第⼀种,⽅法⽐较多,像我们常⽤的 QQ就有,打开聊天框--然后点击上⾯的“ 远程协助”按钮(最右...

请教关与PF文件
2.深入认识Prefetch目录 在Windows XP及其以后的操作系统中,增加了预读取功能(也可以理解为“预先装载”),该功能可以提高系统的性能,加快系统的启动、文件读取的速度,这些预读文件保存在%systemroot%\\Prefetch目录中,以*.pf为扩展名,这些*.pf文件包括了载入文件的详细信息和载入顺序。每一个应用程序...

为什么CPU使用率和PF使用率有时很高有时又低。
1.使用率的高低和你的应用有关系,比如视频处理时,cpu和pf使用肯定是高的。如果你没有使用电脑,还有操作系统和一些程序在后台运行,同时按ctrl+alt+del键,调出任务管理器,看看是哪些进程在运行。关闭没有必要运行的进程。2.平时养成好习惯,不安装自己不知情的软件。很多软件带有捆绑的内容,安装时...

PS:任务管理器是什么? 怎么更新版本? 有地址的给下
【system】:system是windows页面内存管理进程,拥有0级优先。(当system后面出现.exe时是netcontroller木马病毒生成的文件,出现在c:\\\\windows目录下,建议将其删除。) 【explorer】:explorer.exe控制着标准的用户界面、进程、命令和桌面等。explorer.exe总是在后台运行,根据系统的字体、背景图片、活动桌面等情况的不同,通常...

任务管理器的高手问题
任务管理器的用户界面提供了文件、选项、查看、窗口、关机、帮助等六大菜单项,例如“关机”菜单下可以完成待机、休眠、关闭、重新启动、注销、切换等操作,其下还有应用程序、进程、性能、联网、用户等五个标签页,窗口底部则是状态栏,从这里可以查看到当前系统的进程数、CPU使用比率、更改的内存<容量等数据,默认设置下...

后台系统服务管理哪些禁用哪些启用?附图
一些COM+ 软件需要,检查你的 c:\\program files\\ComPlus Applications 目录,没东西可以把这个服务关闭(注意是这个路径里面的服务没有东西可以关闭,不是指COM服务,以免大家又误会). 不能禁止的服务 不过喜欢PF降低的朋友就禁止吧! 8:COM+ System Application :禁用 管理 基于COM+ 组件的配置和跟踪。禁止吧没关系的...

电脑里的性能选项中,处理器计划和内存使用所写的是什么意思
PF使用率就是表示着被系统使用的页面文件的量。如果计算机运行接近最大限度,可以增大页面文件的大小。 CPU使用率与PF使用率就相当于你电脑的CPU配置及内存条大小与系统性能的正比关系咯。CPU使用率太高说明了你的系统开销太大(XP sp2)或者你的CUP已经OUT了需要换咯;你的内存及虚拟内存的硬盘就是...

电脑提示系统检测到你的电脑性能耗能严重什么意思?
EⅩE,它是一个容器,承载着各种系统服务,所以Svchost.EⅩE突然出现问题,那就一定是有系统服务出了故障。一般情况是只有在打开一个文件或程序的时候瞬间100%一下,然后就降下来,但是如果一直保持100%,而且又没开游戏之类很耗资源的程序,说明中了病毒,需要下载杀毒软件才能解决。

江安县19449053817: WPF怎么从后台页面替换前台页面的控件模板(ItemTemplate) -
汉佩克倍: 看得出你的意思,你使用了mvvm模式,然后希望在viewmodel内部切换前端的DataTemplate.因为viewmodel理论上是不引用前端的,所以你肯定无法访问前端任何一个DataTemplate.所以你可以这样做:1. 把你需要在ViewModel中切换的...

江安县19449053817: WPf怎么实现在同一界面切换不同的页面效果,如下图数据与数据曲线的切换效果 -
汉佩克倍: 你可以使用ContentControl控件,然后在button的click事件里动态创建ContentControl的内容(Content属性) 比如你的MainWindow窗口里有如下两个控件,一个ContentControl,一个button 然后你在项目中新建一个UserControl名为UserControl...

江安县19449053817: 前辈指点:WPF桌面应用如何实现同一窗口下的界面切换 -
汉佩克倍: 1、canver 隐藏切换.不需要进行数据传递.2、使用frame+page 进行功能切换.对页面功能可独立编辑.

江安县19449053817: wpf可以在一个项目里建立一个窗口和一个page页面然后在窗口的后台跳转到page页面吗
汉佩克倍: 不能吧 没用过

江安县19449053817: 想用thinkPHP,在后台调数据到前台显示,但先前台的页面要经过一个中转页面,也就是进度线!怎么做? -
汉佩克倍: 写另外一个方法,中转方法 跳转的时候先跳到中转方法,然后在跳到你要去的地方...

江安县19449053817: wpf,怎么通过按钮在同一窗体内跳转不同的页面 -
汉佩克倍: 如果您要使用多个窗口的话,有这样几种方法,仅供参考: 1 把其他的窗口做成控件,放在主窗口上,在主窗口中添加切换子控制代码. 2 隐藏当前窗口,显示下一个窗口; 3 如果两个窗口不用共享数据,可以把下一个窗口做成独立exe,调用exe. 4 使用高级的框架技术控制子窗体的内容,比如prism, 管线开发等,但是跳转判断还是在主程序做出.

江安县19449053817: wpf怎么从主页面退回到登陆界面?急急急!!! -
汉佩克倍: 窗口跳转今天研究了好究,Window1关闭后打开Window2,要设置一个参数:就是上来吐槽一下,希望对其他人有帮助

江安县19449053817: 打开网页总是后台打开,怎么改成前台打开 -
汉佩克倍: 下边有小按钮,第三个,激活新窗口,第四个,在新窗口中打开链接

江安县19449053817: WPF点击主菜单下的子菜单实现界面转换怎么编程,主菜单不变, -
汉佩克倍: 问题不明,无法解决,只好乱回答,看看有没有帮助. <Menu><MenuItem Header="Hello" /></Menu>

江安县19449053817: 本地WP程序后台进入不了,前台文章页面调用的是原程序的网址,如何改过来??? -
汉佩克倍: 你需要修改wordpress数据库里的表wp_options中的两条记录 第一条:字段option_name的值等于siteurl 的记录;第二条:字段option_name的值等于home的记录;两条记录都把option_value 的值只改为你现在的WP安装地址

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网