将自定义类的属性绑定到视图

瓦瑙韦内里

我创建了一个 UserControl 并在代码隐藏中添加了一个新类:

Public WithEvents Fridolin As New Frog With {.Location = New Point(11, 22)}
Public Class Frog
    Implements INotifyPropertyChanged

    Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
    Private Sub NotifyPropertyChanged(Optional ByVal propertyName As String = Nothing)
        RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
    End Sub

    Dim _location As Point
    Property Location As Point
        Get
            Return _location
        End Get
        Set(value As Point)
            _location = value
            NotifyPropertyChanged("Location")
        End Set
    End Property
End Class

如您所见,还有一个 Frog 实例。现在,在我的 XAML 中有一个 Path 对象,我想将它绑定到对象“Fridolin”的 Location 属性。

这是我的 XAML

<UserControl x:Class="ucFrogup"
         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:app="clr-namespace:resi_estimate"
         mc:Ignorable="d" 
         DataContext="{Binding RelativeSource={RelativeSource Self}}"
         d:DesignHeight="360" d:DesignWidth="640">
<UserControl.Resources>
    <ResourceDictionary>
        <StreamGeometry x:Key="ProtoLeaf" >m 451.45 512 c 17.06 0 30.43 -13.86 30.43 -31.56 V 31.55 C 481.87 13.86 468.51 0 451.44 0 A 32.94 32.94 0 0 0 434.99 4.52 L 46.29 229 c -10.13 5.85 -16.18 16 -16.18 27 0 11 6 21.2 16.18 27 l 388.7 224.48 a 32.92 32.92 0 0 0 16.45 4.52 z</StreamGeometry>
        <StreamGeometry x:Key="ProtoFrog">m 51.45 512 c 17.06 0 30.43 -13.86 30.43 -31.56 V 31.55 C 481.87 13.86 468.51 0 451.44 0 A 32.94 32.94 0 0 0 434.99 4.52 L 46.29 229 c -10.13 5.85 -16.18 16 -16.18 27 0 11 6 21.2 16.18 27 l 388.7 224.48 a 32.92 32.92 0 0 0 16.45 4.52 z</StreamGeometry>
    </ResourceDictionary>
</UserControl.Resources>
<Grid>
    <Viewbox Margin="97,10,10,10">

        <Canvas x:Name="Pond" Background="#FF58CFF1" Margin="4" Height="360" Width="640">


            <Path x:Name="Froggy" Height="80" Width="80" Canvas.Left="{Binding Source=Fridolin, Path=Location.X}" Canvas.Top="{Binding Source=Fridolin, Path=Location.Y}" Stretch="Uniform" Fill="#FF43B231" Data="{DynamicResource ProtoFrog}"/>

        </Canvas>
    </Viewbox>
    <Button x:Name="btnGo" Content="Go" HorizontalAlignment="Left" VerticalAlignment="Top" Height="34" Width="78" ></Button>
</Grid>

我错过了什么?顺便说一句,我收到此错误消息:

System.Windows.Data Error: 40 : BindingExpression path error: 'Location' property not found on 'object' ''String' (HashCode=-1218894399)'. BindingExpression:Path=Location.Y; DataItem='String' (HashCode=-1218894399); target element is 'Path' (Name='Froggy'); target property is 'Top' (type 'Double')
特罗尔斯·拉森

我不确定您的代码背后发生了什么,但根据我所知道的,请执行以下操作:

  1. 将您的绑定更改为: Canvas.Left="{Binding Path=Fridolin.Location.X}"
  2. 在后面代码的构造函数中,将您的 DataContext 分配为它本身。我在 C# 中工作,所以请耐心等待:this.DataContext = this;

第 2 步可能是可选的,因为我不记得 DataContext 是否已经分配给它自己。

这将为您与ucFrogup对象本身的所有绑定设置 DataContext ,从而使您能够在不指定源的情况下进行绑定。源用于绑定到(其他)UI 元素,而不是属性。

我建议任何想要使用 WPF 的人阅读 MVVM 模式。它使绑定更加简单和易于阅读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将自定义Dependecy属性绑定到控件的视图模型?

来自分类Dev

如何将自定义Dependecy属性绑定到控件的视图模型?

来自分类Dev

将自定义类的依赖项属性绑定到UI

来自分类Dev

将自定义对象属性绑定到BooleanBinding

来自分类Dev

将自定义类型属性绑定到自定义控件

来自分类Dev

WPF - 将自定义 DataGridTextColumn 模板的 Content 属性绑定到父级的属性

来自分类Dev

将自定义侦听器绑定到主干视图

来自分类Dev

将自定义视图绑定到 xamarin 表单中的页面模型

来自分类Dev

将自定义控件类作为ListViewItem绑定到Listview / GridView

来自分类Dev

v-data-table:将自定义属性绑定到“ items”插槽

来自分类Dev

将自定义控件中的DependencyProperty绑定到ViewModel属性

来自分类Dev

将自定义指令绑定到主机

来自分类Dev

将自定义事件绑定到动态创建的元素

来自分类Dev

如何将自定义模型绑定到TextBoxFor

来自分类Dev

在WPF中将自定义对象绑定到TreeView

来自分类Dev

将自定义指令绑定到主机

来自分类Dev

将自定义 Kotlin 数据类存储到磁盘

来自分类Dev

将自定义属性传递到Aurelia组件

来自分类Dev

无法将自定义属性发布到 LEAD 字段

来自分类Dev

将自定义方法从自定义类传递到.map

来自分类Dev

将集合绑定到自定义控件属性

来自分类Dev

将集合绑定到自定义控件属性

来自分类Dev

子类 NSArrayController 绑定到自定义属性

来自分类Dev

无法将对象的属性绑定到自定义控件

来自分类Dev

从Actvity将变量传递到自定义视图类

来自分类Dev

从Actvity将变量传递到自定义视图类

来自分类Dev

Android:如何从自定义视图的超类获取属性

来自分类Dev

WPF / C#将自定义对象列表数据绑定到ListBox?

来自分类Dev

将自定义对象的数据绑定到MvvmCross中的TextView

Related 相关文章

  1. 1

    如何将自定义Dependecy属性绑定到控件的视图模型?

  2. 2

    如何将自定义Dependecy属性绑定到控件的视图模型?

  3. 3

    将自定义类的依赖项属性绑定到UI

  4. 4

    将自定义对象属性绑定到BooleanBinding

  5. 5

    将自定义类型属性绑定到自定义控件

  6. 6

    WPF - 将自定义 DataGridTextColumn 模板的 Content 属性绑定到父级的属性

  7. 7

    将自定义侦听器绑定到主干视图

  8. 8

    将自定义视图绑定到 xamarin 表单中的页面模型

  9. 9

    将自定义控件类作为ListViewItem绑定到Listview / GridView

  10. 10

    v-data-table:将自定义属性绑定到“ items”插槽

  11. 11

    将自定义控件中的DependencyProperty绑定到ViewModel属性

  12. 12

    将自定义指令绑定到主机

  13. 13

    将自定义事件绑定到动态创建的元素

  14. 14

    如何将自定义模型绑定到TextBoxFor

  15. 15

    在WPF中将自定义对象绑定到TreeView

  16. 16

    将自定义指令绑定到主机

  17. 17

    将自定义 Kotlin 数据类存储到磁盘

  18. 18

    将自定义属性传递到Aurelia组件

  19. 19

    无法将自定义属性发布到 LEAD 字段

  20. 20

    将自定义方法从自定义类传递到.map

  21. 21

    将集合绑定到自定义控件属性

  22. 22

    将集合绑定到自定义控件属性

  23. 23

    子类 NSArrayController 绑定到自定义属性

  24. 24

    无法将对象的属性绑定到自定义控件

  25. 25

    从Actvity将变量传递到自定义视图类

  26. 26

    从Actvity将变量传递到自定义视图类

  27. 27

    Android:如何从自定义视图的超类获取属性

  28. 28

    WPF / C#将自定义对象列表数据绑定到ListBox?

  29. 29

    将自定义对象的数据绑定到MvvmCross中的TextView

热门标签

归档