绑定到画布

2023-12-01

我的类中有一个 canvas 属性,我想知道是否可以将其绑定到 xaml 中的画布?

数据绑定在画布中如何工作?

<Canvas ItemSource="{Binding ClassCanvas}" />

如果您希望 XAML 中定义的 Canvas 将整个 Canvas 作为单个项目包含在类中,您可以编写:

<Canvas>
  <ContentPresenter Content="{Binding ClassCanvas}" />
  ... other items here ...
</Canvas>

如果您希望 XAML 中定义的 Canvas 包含与类中定义的 Canvas 相同的所有 UIElement,这是不可能的,因为 UIElement 只能有一个 UIElement 父级。因此,如果类中定义的 Canvas 是给定 UIElement 的父级,则 XAML 中定义的 Canvas 不能是。

如果您希望 Canvas 显示类中定义的 Canvas 中每个 UIElement 的数据,您可以使用带有 Canvas 面板和 DataTemplate 的 ItemsControl 来完成此操作:

<ItemsControl ItemsSource="{Binding ClassCanvas.Children}">
  <ItemsControl.ItemsPanel>
    <ItemsPanelTemplate>
      <Canvas />
    </ItemsPanelTemplate>
  </ItemsControl>
  <ItemsControl.ItemsContainerStyle>
    <Style>
      <Setter Property="Canvas.Left" Value="{Binding (Canvas.Left)}" />
      <Setter Property="Canvas.Left" Value="{Binding (Canvas.Top)}" />
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate>
            ... display of UIElement here, either using VisualBrush or custom display
          </ControlTemplate>
        <Setter.Value>
      </Setter>
    </Style>
  </ItemsControl.ItemsContainerStyle>
</ItemsControl>

请注意,此代码只会扫描 Children 属性一次,因为它不是 INotifyCollectionChanged 集合。

如果您想要绑定到类中包含 UIElements 集合并设置了 Canvas.Top 和 Canvas.Left 属性的属性,如果容器是 ObservableCollection 而不是 Canvas,则可以轻松执行此操作。

Canvas 类从来就不是为在数据层中使用而设计的。我强烈建议您改用 ObservableCollection 并仅使用 Canvas 作为视图的一部分。

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

绑定到画布 的相关文章

随机推荐

  • Yii2 中按字段排序

    我遇到了这个问题 但没有找到 yii Instrument 的任何解决方案 有人知道如何解决这个问题吗 最终 我使用了这个糟糕的代码 params foreach recipeIds as i gt recipeId params id i
  • 打印出 linq 查询的结果

    我正在使用 asp net core 实体框架 我使用 linq 组合三个表 User Products 和 User Had Products 我的查询似乎工作正常 我遇到的问题是打印出查询结果 我可以打印出整个对象 但无法使用点表示法打
  • Direct3D11:翻转 ID3D11Texture2D

    我执行 Direct3D 后台缓冲区的捕获 当我下载像素时 图像帧沿其垂直轴翻转 复制资源或创建目标时是否可以 告诉 D3D 翻转帧ID3D11Texture2D 我是这样做的 我将帧缓冲区复制到其中的纹理是这样创建的 D3D11 TEXT
  • JSON序列化时如何本地化?

    我已经奋斗了几个小时了 但没有好的结果 我正在尝试使用 NET JSON 序列化器将 JSON 从 UI 来回转换为对象 小数会出现问题 因为我的文化标准使用 作为小数分隔符而不是 我尝试过实现自定义转换器 请参阅this问题 没有好的结果
  • Fortran 符号不在加载表中(无法在 R 中调用加载的符号)

    我正在尝试使用 Absoft Pro Fortran 13 0 3 64 位 构建 Fortran DLL 以便在 Windows 7 64 位上的 R 中使用 这是我的文件 mycalc f 这是一个愚蠢的示例 只是为了测试功能 subr
  • debian docker 上的 GLIBC 不兼容

    我正在尝试构建一个以 rust rocksdb 作为依赖项的 Rust 应用程序 使用最新的 rust docker 映像进行编译 然后将二进制文件移动到 debian 这就是我的 Dockerfile 的样子 FROM rust 1 61
  • 我可以从批量插入中检索lastInsertId吗?

    INSERT INTO details idactivity user hours val date VALUES 981 133 0 10500 2008 07 01 981 184 0 2750 2008 07 01 981 184 0
  • 捕获所有无效子域的 nginx 服务器块

    我在一台主机上有多个域 nginx 管理所有这些域 每个域都有自己的 SSL 证书 我使用 webroot 插件从 certbot 获取该证书 我在每个配置文件的末尾都有一个服务器块 作为 包罗万象 来自here and here 对于无效
  • 使用点斜杠的最佳实践是什么?

    我在日志文件中看到大量与在锚标记的 href 属性上使用点斜杠 相关的错误 仅当点击来自 java 客户端时才会发生 HTML文档 a href myPage php Link to a dot slash file a 访问日志条目 my
  • 线程无法访问该对象

    我声明了一个字段 WriteableBitmap colorBitmap 然后我创建了一个简单的线程来执行某些操作 private void doSomething bla bla bla colorBitmap new Writeable
  • 谷歌地图多个信息窗口不起作用

    我尝试使用 javascript 将多个标记和信息窗口添加到谷歌地图 下面是代码
  • 在ansible中用多个值替换多个模式

    我在用regex replace在ansible中过滤 我可以让它工作 但它真的很麻烦 这就是我正在做的 set fact variable value regex replace 84 89 regex replace 76 78 reg
  • Javascript 对项目进行排序,排除某些特定项目

    我正在尝试对一些项目进行排序 对地图进行排序 我可以成功对其进行排序 但我想根据其属性排除一些项目 现在我根据属性 价格这样排序 return product attr active f sort function pA pB return
  • yii 模型搜索,带有时间戳的日期范围

    任何人都可以发布如何使用日期选择器过滤网格视图时间戳 Y m d h m s 列 我的模型如下 public function search criteria new CDbCriteria criteria gt condition ti
  • rmarkdown 中的变量作为标题

    In short 如何在 rmarkdown 中的块内打印 html header 使用变量在代码块内创建标头 In long 假设我的数据集中有许多变量 名称也存储在向量 Vars 中 并且每组 3 个变量属于同一主题 我可以创建一个循环
  • 在 XSLT 中使用 HTML 实体(例如 )

    在 XSLT 中包含 html 实体的最佳方式是什么
  • 求和值时返回 NaN 的对象

    我承认我在 JavaScript 和 JSON 方面很弱 我花了很多时间试图弄清楚为什么我的对象中的数字相加时会返回 NaN 考虑到这一点 下面是我的 JSON 存储到一个变量中 var data acc ext id null cat c
  • 'mov cx, [bp+6]' 使用什么寻址模式?

    mov cx bp 6 使用什么寻址模式 处理器是intel 8086 我正在学习Douglas V Hall 的 微处理器和接口 我知道它的内存寻址模式 但不确定它是基于寻址模式还是索引寻址模式 bp 6 是基于寻址模式 来自原始 808
  • laravel 4 关系 - 如何显示用户投票记录的前 5 名排名

    我正在创建一个新闻源系统 正如你很容易猜到的那样 这超出了我的能力范围 请善待我 让我走上正轨 或者提供一些我可以继续做的事情 我有数百个事件 模型名称为 Event1 表 事件 我还有一个数据透视表 用户可以在其中分配任何事件的重要性 值
  • 绑定到画布

    我的类中有一个 canvas 属性 我想知道是否可以将其绑定到 xaml 中的画布 数据绑定在画布中如何工作