绑定到窗口高度和宽度的问题

2024-02-14

当我尝试将窗口的高度和宽度绑定到视图模型中的属性时,遇到一些问题。这是一个小示例应用程序来说明该问题。这是app.xaml.xs中的代码

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
       base.OnStartup(e);
        MainWindow mainWindow = new MainWindow();
        MainWindowViewModel mainWindowViewModel = new MainWindowViewModel();
        mainWindow.DataContext = mainWindowViewModel;
        mainWindow.Show();
    }
}

这是MainWindow.xaml:

<Window x:Class="TestApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="{Binding WindowHeight}" 
        Width="{Binding WindowWidth}"
        BorderThickness="{Binding WindowBorderThickness}">
</Window>

这是视图模型:

public class MainWindowViewModel
{
    public int WindowWidth { get { return 100; } }
    public int WindowHeight { get { return 200; } }
    public int WindowBorderThickness { get { return 8; } }
}

当程序启动时,将调用 WindowHeight 和 WindowBorderThickness(但不是 WindowWidth)的 getter,因此正确设置了窗口的高度和边框,但没有设置宽度。

然后,我添加将触发所有属性的 PropertyChanged 的​​按钮,以便视图模型现在如下所示:

public class MainWindowViewModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    public void TriggerPropertyChanges()
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs("WindowWidth"));
            PropertyChanged(this, new PropertyChangedEventArgs("WindowHeight"));
            PropertyChanged(this, new PropertyChangedEventArgs("WindowBorderThickness"));
        }

    }

    public ICommand ButtonCommand { get { return new RelayCommand(delegate { TriggerPropertyChanges(); }); } }

    public int WindowWidth { get { return 100; } }
    public int WindowHeight { get { return 200; } }
    public int WindowBorderThickness { get { return 8; } }
}

现在,当我单击按钮时,将调用 WindowBorderThickness 的 getter,但不会调用 WindowWidth 和 WindowHeight 的 getter。对我来说,这一切都显得非常奇怪和不一致。我缺少什么?


尝试使用两种方式绑定,它对我有用:

Width="{Binding Path=xExt, Mode=TwoWay}"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

绑定到窗口高度和宽度的问题 的相关文章

  • ComboBox DataBinding 导致 ArgumentException

    我的几个类对象 class Person public string Name get set public string Sex get set public int Age get set public override string
  • IdentityServer 4 对它的工作原理感到困惑

    我阅读和观看了很多有关 Identity Server 4 的内容 但我仍然对它有点困惑 因为似乎有很多移动部件 我现在明白这是一个单独的项目 它处理用户身份验证 我仍然不明白的是用户如何注册它 谁存储用户名 密码 我打算进行此设置 Rea
  • JNI 将 Char* 2D 数组传递给 JAVA 代码

    我想从 C 代码通过 JNI 层传递以下指针数组 char result MAXTEST MAXRESPONSE 12 12 8 3 29 70 5 2 42 42 在java代码中我写了以下声明 public static native
  • 尝试使用 VS 2012 打开我的 asp.net 4.5 MVC Web 应用程序时出错。Asp.net 尚未在服务器上注册

    我有一个Windows Server 2012 R2 Visual Studio 专业版 2012 现在我用来开发 ASP NET 4 5 MVC 4 Web 应用程序 没有任何问题 但现在当我尝试打开该项目时 我会收到此错误 如果我单击
  • 如何填充 ToolStripComboBox?

    我发现它很难将数据绑定到ToolStripComboBox 好像没有这个ValueMember and DisplayMember特性 怎么绑定呢 访问toolstripcombobox中包装的组合框并访问其ValueMember Disp
  • 当一组凭据下的计划任务启动的进程在另一组凭据下运行另一个程序时,Windows 是否有限制

    所以我有一个简单的例子 其中我有应用程序 A 它对用户 X 本地管理员 有一些硬编码的凭据 然后它使用硬编码的绝对路径启动带有这些凭据的应用程序 B A 和 B 以及 dotnet 控制台应用程序 但是它们不与控制台交互 只是将信息写入文件
  • Visual Studio 在构建后显示假错误

    我使用的是 Visual Studio 2017 构建后 sln在调试模式下 我收到错误 但是 当我通过双击错误列表选项卡中的错误来访问错误时 错误会从页面中消失 并且错误数量也会减少 我不太确定这种行为以及为什么会发生这种情况 有超过 2
  • C# 数据表更新多行

    我如何使用数据表进行多次更新 我找到了这个更新 1 行 http support microsoft com kb 307587 my code public void ExportCSV string SQLSyntax string L
  • 使用可变参数包类型扩展的 C++ 函数调用者包装器

    我绑定了一些 API 并且绑定了一些函数签名 如下所示 static bool WrapperFunction JSContext cx unsigned argc JS Value vp 我尝试将对象和函数包装在 SpiderMonkey
  • Python 属性和 Swig

    我正在尝试使用 swig 为一些 C 代码创建 python 绑定 我似乎遇到了一个问题 试图从我拥有的一些访问器函数创建 python 属性 方法如下 class Player public void entity Entity enti
  • C# 存档中的文件列表

    我正在创建一个 FileFinder 类 您可以在其中进行如下搜索 var fileFinder new FileFinder new string C MyFolder1 C MyFolder2 new string
  • 识别 Visual Studio 中的重载运算符 (c++)

    有没有办法使用 Visual Studio 快速直观地识别 C 中的重载运算符 在我看来 C 中的一大问题是不知道您正在使用的运算符是否已重载 Visual Studio 或某些第三方工具中是否有某些功能可以自动突出显示重载运算符或对重载运
  • 在视口中查找 WPF 控件

    Updated 这可能是一个简单或复杂的问题 但在 wpf 中 我有一个列表框 我用一个填充数据模板从列表中 有没有办法找出特定的数据模板项位于视口中 即我已滚动到其位置并且可以查看 目前我连接到了 listbox ScrollChange
  • 在mysql连接字符串中添加应用程序名称/程序名称[关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我正在寻找一种解决方案 在连接字符串中添加应用程序名称或程序名称 以便它在 MySQL Workbench 中的 客户端连接 下可见 SQL
  • C++ 中的双精度型数字

    尽管内部表示有 17 位 但 IEE754 64 位 浮点应该正确表示 15 位有效数字 有没有办法强制第 16 位和第 17 位为零 Ref http msdn microsoft com en us library system dou
  • DataTable.GetChanges() 不断返回 NULL

    我正在尝试获取存在于的所有行allData但不在removeData public static DataTable RemoveDuplicateRows DataTable allData DataTable removeData re
  • OpenGL:仅获取模板缓冲区而没有深度缓冲区?

    我想获取一个模板缓冲区 但如果可能的话 不要承受附加深度缓冲区的开销 因为我不会使用它 我发现的大多数资源表明 虽然模板缓冲区是可选的 例如 排除它以利于获得更高的深度缓冲区精度 但我还没有看到任何请求并成功获取仅 8 位模板缓冲区的代码
  • 在 Windows Phone silverlight 8.1 上接收 WNS 推送通知

    我有 Windows Phone 8 1 silverlight 应用程序 我想使用新框架 WNS 接收通知 我在 package appxmanifest 中有
  • GCC 的“-Wl,option”和“-Xlinker option”语法之间有区别吗?

    我一直在查看一些配置文件 并且看到它们都被使用 尽管在不同的体系结构上 如果您在 Linux 机器上使用 GCC 将选项传递给链接器的两种语法之间有区别吗 据我所知 阅读 GCC 手册时 他们的解释几乎相同 From man gcc Xli
  • 不区分大小写的字符串比较 C++ [重复]

    这个问题在这里已经有答案了 我知道有一些方法可以进行忽略大小写的比较 其中涉及遍历字符串或一个good one https stackoverflow com questions 11635 case insensitive string

随机推荐

  • Windbg 设置取决于调用堆栈的条件断点

    问题 我需要制作一个脚本或表达式 如果调用堆栈上的某处是具有特定名称的函数 则该脚本或表达式不会中断 具体问题 如何将调用堆栈上的函数获取到字符串列表 Example Module MyFunctionWithConditionalBrea
  • Leaflet.js:是否可以按属性过滤geoJSON特征?

    我环顾四周 看到很多有关如何显示 隐藏图层的信息 这很酷 但由于我可以向 GeoJSON 功能添加任意属性 所以我希望能够相应地过滤它们 例如 如果我的特征 1 2 和 3 具有以下属性 小 红色 甜的 大 绿色 酸的 小 红色 热的 我如
  • docker compose up 工作正常,但浏览器显示无法访问站点

    docker compose up显示这个 Recreating tutorial product service 1 Recreating tutorial product service 1 done Attaching to tuto
  • ant中设置类路径的问题

    我在运行 Java 程序时遇到问题 它使用一些第三方 JAR 我可以很好地编译它 但是当我在 ant 中调用我的运行目标时 它说它找不到我告诉它在类路径中运行的类 我的 build xml 如下所示
  • 为什么解构赋值不知道空值是假值并使用默认值? [复制]

    这个问题在这里已经有答案了 假设我们有一个函数使用参数内部对象中的一些键 const api data name gt My name is name 如果我们通过 data data 0 data NaN or data undefine
  • 无法在 WCF C# 中接收 xml post 请求值

    我正在试验 WCF 并构建了一个带有 id 和 name 参数的标准产品类 我的目标是从休息中接收它 并返回状态 DataContract public partial class Product DataMember public int
  • 如何在网页上嵌入 mjpeg 文件

    我需要将 IP 摄像机的输出显示到网页 以便最终用户可以使用此页面从该摄像机查看实时内容 它有一个为捕获的视频提供 mjpeg 输出的界面 我需要将其嵌入到我的网页上 它至少应该可以在 Firefox Safari 和 IE 上运行 提前致
  • 当选项比屏幕尺寸长时,iOS 7 不会显示多于一行

    iOS 7 在 html 中不显示多于一行options
  • 如何在Unity3D中用C#制作延迟?

    我刚刚开始学习unity c 我遵循了教程 但我想添加一些东西 using UnityEngine using UnityEngine UI using System Collections public class PlayerContr
  • 一条指令清除 PF(奇偶校验标志)——获取结果寄存器中的奇数位

    在x86汇编中 是否可以在一条且只有一条指令中清除奇偶校验标志 在any初始寄存器配置 这相当于创建一个结果寄存器odd位数 以及任何设置标志的操作 明确排除mov 相比之下 设置奇偶校验标志可以在一条指令中完成 cmp bl bl 清除奇
  • Django 反序列化

    我收到以下错误 回溯 最近一次调用最后一次 文件 tests py 第 92 行 位于 test single search 对于serializers deserialize中的return obj json response ensur
  • 无法从资源加载定义

    我有一个 希望 非常基本的问题 我对 Ant 非常不熟悉 我只是尝试使用构建文件 以便为我最近发现的开源应用程序 Rapid Miner 编写一些插件 我一直在尝试使用 Eclipse 来编译它 遵循 Eclipses org 自己的说明
  • 是否有 UTF-16 字符串类型的 Rust 库? (用于编写 Javascript 解释器)

    For most程序 最好内部使用 UTF 8 http utf8everywhere org 并在必要时转换为其他编码 但就我而言 我想编写一个 Javascript 解释器 并且仅存储 UTF 16 字符串 或数组 要简单得多u16 因
  • ARKit根据触摸位置设置ARAnchor变换

    我正在 XCode 9 上使用 AR 入门应用程序 其中在点击场景中创建锚点 override func touchesBegan touches Set
  • 将原始帧转换为 webm 直播流

    我有一个 ASP NET 应用程序 其设置如下 以 656x492 分辨率捕获原始 RGB 帧的相机 这些帧在我的 C 代码中进行处理 带有一些简单的图像 加工 原始图像存储在字节数组中 以及包装在位图容器中 缺少魔法 将原始图像缓冲区转换
  • SVG 检测“fill: none”上的 Onclick 事件

    当我创建一个 svg 矩形时fill black my onclick事件处理程序被调用 当我更换fill black with fill none 当我在矩形内单击时 不会调用我的事件处理程序 而仅在单击border直肠的 我需要更改什么
  • GLSL 片段位置

    在我的 cpp 代码中 我创建了一个四边形列表 其中一些有一个标志 在像素着色器中 我检查是否设置了该标志 如果未设置标志 则四边形将变为红色 例如 如果设置了标志 我想决定每个像素的颜色 所以如果我需要将标记的四边形的一半着色为红色 另一
  • 如何解决 django 管理错误 302 问题?

    我在尝试登录 django 管理页面时不断收到错误 Watching for file changes with StatReloader Performing system checks System check identified n
  • Create React App 提供的react-scripts包需要依赖:

    项目依赖树可能有问题 这可能不是 Create React App 中的错误 而是您需要在本地修复的问题 Create React App 提供的react scripts包需要依赖 babel eslint 9 0 0 不要尝试手动安装它
  • 绑定到窗口高度和宽度的问题

    当我尝试将窗口的高度和宽度绑定到视图模型中的属性时 遇到一些问题 这是一个小示例应用程序来说明该问题 这是app xaml xs中的代码 public partial class App Application protected over