WPF 绑定 Width 到 Parent.Width*0.3

2023-11-26

我想将控件的宽度绑定到父级的宽度,但绑定到一定的比例。有没有办法做这样的事情:

<Rectangle  Name="rectangle1" Width="{Binding ActualWidth*0.3, ElementName=thumbnailCanvas, UpdateSourceTrigger=PropertyChanged}" Height="{Binding ActualHeight, ElementName=thumbnailCanvas, UpdateSourceTrigger=PropertyChanged}"/>

当然可以,但是您需要使用转换器。像这样的东西:

using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Markup;

namespace WpfTestBench.Converters
{
    public class PercentageConverter : MarkupExtension, IValueConverter
    {
        private static PercentageConverter _instance;

        #region IValueConverter Members

        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return System.Convert.ToDouble(value) * System.Convert.ToDouble(parameter);
        }

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

        #endregion

        public override object ProvideValue(IServiceProvider serviceProvider)
        {
            return _instance ?? (_instance = new PercentageConverter());
        }
    }
}

您的 XAML 将如下所示:

<Window x:Class="WpfTestBench.ScaleSample"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:converters="clr-namespace:WpfTestBench.Converters"
        Title="Scale sample" Height="300" Width="300">
    <Grid Name="ParentGrid">
        <Rectangle
            Width="{Binding Path=ActualWidth, ElementName=ParentGrid, Converter={converters:PercentageConverter}, ConverterParameter='0.5'}"
            Stroke="Black" StrokeThickness="2" />
    </Grid>
</Window>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 绑定 Width 到 Parent.Width*0.3 的相关文章

随机推荐

  • 对字符串日期数组进行排序

    我想按升序对数组进行排序 日期为字符串格式 09 06 2015 25 06 2015 22 06 2015 25 07 2015 18 05 2015 甚至需要一个函数来检查这些日期是否是连续形式 eg Valid 09 06 2015
  • 是否可以创建一个计算指令数量的 Monad?

    考虑到 monad 我想到了用 monad 来打破冯 诺依曼架构的方法 冯诺依曼架构使用一组指令 称为程序 来更改内存中的数据 并且程序的每条指令的执行都会更新程序计数器以了解下一个要执行的指令 如果我们将冯 诺依曼架构视为一个 monad
  • “sizeof”如何确定数组的大小?

    C 如何在运行时找到数组的大小 有关数组大小或边界的信息存储在哪里 sizeof array 完全由C编译器实现 当程序被链接时 看起来像sizeof 对你的呼叫已转换为常量 示例 当您编译此 C 代码时 include
  • 我可以在 C# 中强制内存清理吗?

    我听说 C 不会立即释放内存 即使您已经使用完它 我可以强制 C 释放内存吗 我正在使用 Visual Studio 2008 Express 这有关系吗 附 我对 C 及其管理内存的方式没有任何问题 我只是好奇 Jim 你没听错 它通过称
  • 捆绑执行不与 crontab 一起使用

    我正在尝试使用 crontab 执行以下 shell 脚本 bin sh cd mnt voylla production current bundle exec rake maintenance last 2 days orders bu
  • 使用列级 WHERE 子句更新多个列中的所有 SQL NULL 值?

    我们有一个包含大量宽表 每个表 40 80 列 的数据库 并且刚刚发现一个错误 该错误将 NULL 值引入到大约 500 条记录中 NULL 值可以出现在任何列中 所有列都是整数列 请参见下图 但这些 NULL 值会导致我们的报告系统之一出
  • 在 C# 中使用对象初始值设定项时无法识别引发异常的属性

    在下面的两个示例代码中 我尝试实例化一个名为Test通过使用 C 普通方法和对象初始值设定项 DateTime nullDate null this value will come from somewhere else DateTime
  • 导入错误:没有名为tensorflow的模块

    请帮我解决这个错误 我已经在我的服务器上安装了tensorflow模块 下面是它的信息 15IT60R19 cpusrv gpu 109 pip show tensorflow Name tensorflow Version 1 0 0 S
  • Internet Explorer 无法打开 pdf 字符串文件

    我 从我不管理的网络服务 收到一个包含 pdf 文件内容的字符串 在客户端 我使用这个函数 window open data application pdf base64 encodeURI TheStringWithThePdfConte
  • 基本的 openGL、顶点缓冲区和 pyglet

    编辑 rotoglup 在我的代码中发现了问题 添加我删除的着色器完成了解决方案 请参阅下面我的答案以获取正确的代码 带有着色器 Hi all 我正在尝试从中学习现代 OpenGL 的一些基础知识本教程 我想用 python pyglet
  • Azure Devops Rest API - 获取当前在代理池中排队的构建

    有没有办法只从 Azure DevOps Rest API 获取在特定池中等待可用代理的构建 我目前有这个端点 它为我提供池中发生的所有作业请求 https dev azure com organization apis distribut
  • 跨面板对齐 Swing 组件

    我们有一个 JPanel 其中包含多个包含 JComponent 的 JPanel 比如说 JLabels 和 JTextboxes 在每个内部 JPanel 中 我们使用 JGoodies 布局来确保所有标签的正确对齐 但当然 我们希望所
  • 在 OpenCV 中读取 .exr 文件

    我使用 Blender 生成了一些深度图 并以 OpenEXR 格式保存了 z 缓冲区值 32 位 有没有办法使用 OpenCV 2 4 13 和 python 2 7 访问 exr 文件中的值 逐像素深度信息 到处都找不到例子 我在文档中
  • Numpy - 检查一个数组的元素是否属于另一个数组

    我有 2 个 numpy 数组 xarr np array 1 1 1 2 1 3 1 4 1 5 y np array 1 1 1 2 我想检查每个元素是否xarr属于y或等于1 3 如果一个元素属于y 返回 y 如果某个元素等于1 3
  • 使用 Spring-Boot 无法在启动时进行 Liquibase 迁移

    下列的this文档 To automatically run Liquibase database migrations on startup add the org liquibase liquibase core to your cla
  • 以编程方式确定 AppEngine for Java 环境

    有没有办法在运行时以编程方式判断 Google App Engine 应用程序是在本地运行还是在托管运行 我正在寻找一种方法来在本地开发环境中运行时调用一些自定义存根代码 并在运行托管时进行不同的调用 您可以使用com google app
  • Silex:允许用户通过单击 html 元素并保持干净的 URL 来更改语言

    我在网站上使用 Silex 和 Twig 我希望允许用户更改网站的语言 我的问题 现在 如果我更改 URL 中的区域设置 它就可以工作 my account 我的页面内容是英文 默认 locale fr my account 我的页面内容是
  • (Python C API)PyRun_StringFlags 缺少内置函数?

    我正在尝试在我的宠物项目中嵌入一些Python 我已将问题简化为以下代码 include
  • System.Uri 和编码的冒号 (:)

    在 Net 4 5 之前 System Uri 似乎会对编码的斜杠进行取消编码 但此后此问题已得到修复 参考 https stackoverflow com a 20733619 188740 我在冒号方面遇到了同样的问题 System U
  • WPF 绑定 Width 到 Parent.Width*0.3

    我想将控件的宽度绑定到父级的宽度 但绑定到一定的比例 有没有办法做这样的事情