WPF:如何使视图动态化?

2024-01-09

我有以下 xaml:以下 xaml 必须在运行时动态填充需要什么,但是如何填充? MainWorkspaceViewModel 有一个名为“View”的属性。该属性是对象类型,因此我可以设置其中的每个视图。

<UserControl x:Class="DesignerWorkspace.Views.MainWorkspaceView"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:local="clr-namespace:DesignerWorkspace.Views"
             xmlns:vm="clr-namespace:DesignerWorkspace.ViewModels"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="300">        
    <Grid>
        <ContentControl Content="{Binding View}"/>
    </Grid>
</UserControl>

最低限度是添加一个上下文,其中的视图和属性更新已更改。

然后,您可以从代码中的其他位置通过设置新视图来管理显示的视图。

这是一个简单的实现,其中缺少您可能想要添加的检查。

class MainWorkspaceViewModel : INotifyPropertyChanged
{
    private object _view;
    public object View {
        get { return _view; }
        set { _view = value; OnPropertyChanged(); }
    }
    public event PropertyChangedEventHandler PropertyChanged = delegate { };
    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

internal class MyViewManager
{
    internal static MainWorkspaceView MakeMainView()
    {
        var view = new MainWorkspaceView();
        view.DataContext = new MainWorkspaceViewModel();
        return view;
    }

    internal static void UpdateView(MainWorkspaceViewModel viewmodel, object _next)
    {
        viewmodel.View = _next;
    }
    internal static void UpdateView(MainWorkspaceView view, object _next)
    {
        (view.DataContext as MainWorkspaceViewModel).View = _next;
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF:如何使视图动态化? 的相关文章

  • 使用 C# 登录《我的世界》

    我正在尝试为自己和一些朋友创建一个简单的自定义 Minecraft 启动器 我不需要启动 Minecraft 的代码 只需要登录的实际代码行 例如 据我所知 您过去可以使用 string netResponse httpGET https
  • WPF DataGrid 验证/绑定模式错误

    我创建了一个非常简单的新项目 仅测试 Microsoft WPF DataGrid 行为 不涉及其他 我只使用标准的 DataGrid
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 从同一个类中的另一个构造函数调用构造函数

    我有一个带有两个构造函数的类 C 这是代码片段 public class FooBar public FooBar string s constructor 1 some functionality public FooBar int i
  • 在Linux中,找不到框架“.NETFramework,Version=v4.5”的参考程序集

    我已经设置了 Visual studio 来在我的 Ubuntu 机器上编译 C 代码 我将工作区 我的代码加载到 VS 我可以看到以下错误 The reference assemblies for framework NETFramewo
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 类型约束

    我有以下类层次结构 class Header IEnumerable
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • 高效列出目录中的所有子目录

    请参阅迄今为止所采取的建议的编辑 我正在尝试使用 WinAPI 和 C 列出给定目录中的所有目录 文件夹 现在我的算法又慢又低效 使用 FindFirstFileEx 打开我正在搜索的文件夹 然后我查看目录中的每个文件 使用 FindNex
  • 检测到严重错误 c0000374 - C++ dll 将已分配内存的指针返回到 C#

    我有一个 c dll 它为我的主 c 应用程序提供一些功能 在这里 我尝试读取一个文件 将其加载到内存 然后返回一些信息 例如加载数据的指针和内存块的计数到 c Dll 成功将文件读取到内存 但在返回主应用程序时 程序由于堆损坏而崩溃 检测
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • 这个可变参数模板示例有什么问题?

    基类是 include
  • 堆栈是向上增长还是向下增长?

    我在 C 中有这段代码 int q 10 int s 5 int a 3 printf Address of a d n int a printf Address of a 1 d n int a 1 printf Address of a
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域

随机推荐

  • 为什么 Flask-Migrate 让我进行两步迁移?

    我正在开发一个使用 Flask SQLAlchemy Alembic 及其 Flask 包装器 Flask SQLAlchemy 和 Flask Migrate 的项目 我有四个迁移 1c5f54d4aa34 gt 4250dfa822a4
  • PHP 的引用赋值未按预期工作

    为什么会出现以下情况 class AClass public function construct this gt prop Hello public function get return this gt prop protected p
  • 将日期转换为 UTC 格式

    我想将本地日期转换为 UTC 格式 美国格式 NSString getUTCFormateDate NSDate localDate NSDateFormatter dateFormatter NSDateFormatter alloc i
  • 无法导出函数表达式:“TypeError:xxx 不是函数”

    我试图遵循模块的基本指南 我创建了 test module js var textFunction function console log text exports textFunction 然后我尝试在我的 app js 中使用它 va
  • 如何使用 PHP 使用 foreach 循环 json 对象?

    我如何使用每个来访问和打印参与者姓名 Json 对象是 particpants name 当使用标记化文件上传时 它会被填充 我知道标记化文件确实创建了一个成功的 JSON 对象 正是在 foreach 循环内部给我带来了麻烦 警告 输入非
  • Firebug - 断点没有命中

    我在外部 JS 文件中设置断点 但无法让 Firebug 以一致的方式命中断点 它有时有效 但大多数时候无效 我可以让它工作的唯一方法是打开 中断所有错误 我已经使用了调试器 声明也没有任何运气 如果行号不是绿色 Firebug 似乎无法调
  • 为什么 apache Spark 不能与 java 10 一起使用?我们得到非法反射然后 java.lang.IllegalArgumentException

    是否有任何技术原因导致 Spark 2 3 无法与 java 1 10 一起使用 截至 2018 年 7 月 这是我使用运行 SparkPi 示例时的输出spark submit bin spark submit examples src
  • 如何将外部 jQuery 插件添加到 Odoo 上的列表视图?

    我正在使用 Odoo 10e 我想将 jquery 插件集成到我的模块中 我想集成 jQuery 插件jquery 可调整大小的列 https github com dobtco jquery resizable columns 它很简单
  • 关于“动态”模型验证的建议

    我有一个名为Calendar 将应用于它的验证因用户所做的选择而异 我知道我可以使用自定义验证 条件验证来执行此操作 但对我来说看起来不太干净 我想知道是否可以将其存储在数据库列上并将其传递给 通用 验证器方法 你怎么认为 进一步解释 用户
  • 将新数据推送到 firebase 数据库时设置自定义键

    好吧 我是 Firebase 的新手 我希望在将新数据推送到数据库时拥有自己的密钥 Problem FireBase push setValue mapped values 这给出了如下结构 我如何在那里创建自己的自定义密钥 比如用户名什么
  • 从 WinForms 迁移到 WPF

    那么我们正在考虑从 WinForms 迁移到 WPF WPF 有哪些陷阱 我们得到了组件one的flexgrid 是否有任何wpf网格具有相同的功能 它的一件好事是您可以为单元格实现自己的绘制方法 它可以合并单元格打印并保存为多种文件格式
  • 在 ServiceStack Web 服务中设置公共属性

    我正在尝试使用 Sqlite 为 ServiceStack 服务编写单元测试 由于 Sqlite 不支持存储过程 因此我创建了 ServiceCommand 类型的公共属性 它将命令文本和命令类型作为输入 默认情况下 它配置为运行存储过程
  • 无法解析方法“findViewById(int)”

    我遇到了麻烦findViewByid但我找不到问题出在哪里 这是我的FirstFragment班级代码 import android app Fragment import android os Bundle import android
  • 为什么使用 unix-compress 和 go compress/lzw 会产生不同的文件,而其他解码器无法读取?

    我在终端中压缩了一个文件compress file txt并得到 如预期 file txt Z 当我将该文件传递给ioutil ReadFile in Go buf0 err ioutil ReadFile file txt Z 我收到错误
  • Qt 应用程序框架中的分段错误

    由于 QColor colorMap 9 这会产生分段错误 如果我删除 colorMap 分割错误就会消失 如果我把它放回去 它回来了 如果我清理所有然后构建所有 它就会消失 如果我增加它的数组大小它就会回来 另一方面 如果我减少它 它就不
  • 在代理键上使用反向索引的好习惯? (甲骨文)

    假设我有一个带有自动递增代理键的表 这是使用反向索引的好例子吗 我的说法是否正确 插入 插入索引 会更快 因为新值将随机插入 而不是总是插入最右边的叶子 不断强制重新平衡 索引查找会稍微慢一些 因为数据库必须花费 一点 时间来反转索引 因为
  • 来自服务器的 HTML 响应

    我有一个应用程序将一些数据提交到本地服务器 结果服务器将发回 JSON 说 状态 成功 当我在 2 3 SDK 模拟器中运行该应用程序 但安装在 Galaxy Tab 2 2 SDK 中时 它可以正常工作 相同的响应采用 html 的形式
  • Spark中的FPGrowth算法

    我正在尝试在 Spark 中运行 FPGrowth 算法的示例 但是遇到错误 这是我的代码 import org apache spark rdd RDD import org apache spark mllib fpm FPGrowth
  • corePoolSize 0 的 ThreadPoolExecutor 在任务队列已满之前不应执行任务

    我正在经历Java 并发实践并被困在8 3 1 线程的创建和销毁话题 以下脚注警告不要保留corePoolSize为零 开发人员有时会试图将核心大小设置为零 以便工作线程 最终会被拆除 因此不会阻止 JVM 退出 但这可能会导致一些问题 不
  • WPF:如何使视图动态化?

    我有以下 xaml 以下 xaml 必须在运行时动态填充需要什么 但是如何填充 MainWorkspaceViewModel 有一个名为 View 的属性 该属性是对象类型 因此我可以设置其中的每个视图