如何将文本框绑定到WPF中的类的字段?

克隆1201

我正在尝试为矢量值创建一个自定义属性编辑器,如下所示:

 public struct Float4
 {
      public float x,y,z,w;
 }

在某些对象中,它将具有如下属性:

public class SomeEntity : INotifyPropertyChanged
{
      private Float4 prop;
      [Category("Property")]
      [Editor(typeof(VectorEditor),typeof(PropertyValueEditor)]
      public Float4 Prop
      {
            get{return prop;}
            set{prop = value ; NotifyPropertyChanged("prop");}
      }  
}

(我从这里开始使用WpfPropertyGrid

VectorEditor 使用这样的DataTemplate:

<DataTemplate x:Key="VectorEditorTemplate">
    <DataTemplate.Resources>
        <!--first use a ObjectDataProvider to get a `Type`-->
        <ObjectDataProvider MethodName="GetType" ObjectType="{x:Type local:Float4}" x:Key='VectorType' >
        </ObjectDataProvider>
        <local:GetFieldsConverter x:Key="GetFieldsConverter" />
    </DataTemplate.Resources>         

    <!--then use a Converter to create a ObservableCollection of `FieldInfo` from `Type`-->
    <ItemsControl ItemsSource="{Binding Source={StaticResource VectorType},Converter={StaticResource GetFieldsConverter}}">
            <ItemsControl.Resources>
            <!-- this Converter will provider field name-->
                <local:GetFieldNameConverter x:Key="GetFieldNameConverter"/>
            </ItemsControl.Resources>
            <!-- Other Elements -->
            <ItemsControl.ItemTemplate>
                <DataTemplate>
                    <DockPanel HorizontalAlignment="Stretch">
                        <TextBlock DockPanel.Dock='Left' Text="{Binding Converter={StaticResource GetFieldNameConverter}}" Width="25" />
                        <TextBox HorizontalAlignment="Stretch" Text="{Binding Path=Value}"/>
                    </DockPanel>
                </DataTemplate>
            </ItemsControl.ItemTemplate>
        </ItemsControl>
</DataTemplate>

在这种情况下,TextBox.Text中的Path设置为Value,因为它是模板,所以它不知道此Item与哪个字段关联。

那么,如何使其与现场相关联?并绑定到它,因此当此TextBox的值更改时,它可以PropertyChanged向包含的对象引发一个事件Float4

普拉格梅特克

至少有两件事会阻止Float4在WPF中使用您的类型:

  • 这是一种价值类型

  • 成员不是属性而是字段

因此,我担心您必须为值使用代理

public class Float4Proxy : INotifyPropertyChanged
{
    private Float4 float4;

    public float X
    {
        get { return float4.x; }
        set
        {
            if (value != float4.x)
            {
                float4.x = value;
                PropertyChanged(this, new PropertyChangedEventArgs("X"));
            }
        }
    }

    ...
}

在您的XAML中,您将能够进行以下两种方式的绑定:

<TextBox HorizontalAlignment="Stretch" Text="{Binding Path=Value.X}"/>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将文本框绑定到类Property

来自分类Dev

如何将文本框绑定到datetime字段,但仅显示其日期部分(在ASP.MVC中)?

来自分类Dev

如何将文本框绑定到datetime字段,但仅显示其日期部分(在ASP.MVC中)?

来自分类Dev

如何将文本框绑定到MS Access中子窗体的链接子字段?

来自分类Dev

如何将文本框绑定到不在数据上下文类中的类

来自分类Dev

将文本框值绑定到WPF中的模型

来自分类Dev

如何将文本框对象绑定到ViewModel

来自分类Dev

如何将文本框中的字体大小绑定到数据源?

来自分类Dev

如何将列表绑定到ItemsControl中的文本框

来自分类Dev

如何将ProgressBar值绑定到ResourceDictionary中的文本框?

来自分类Dev

如何将文本框的长度绑定到文本块?

来自分类Dev

如何将文本框文本绑定到集合的“当前”项目

来自分类Dev

如何将文本框的文本与文件内容绑定?

来自分类Dev

清除绑定到wpf中的静态属性的文本框

来自分类Dev

如何根据条件将C#WPF文本框绑定到不同的属性?

来自分类Dev

如何将xaml绑定到来自其他类的文本框

来自分类Dev

如何将Winform文本框绑定到类属性?

来自分类Dev

如何将简单的字符串值绑定到文本框?

来自分类Dev

如何将2个文本框绑定到一个属性?

来自分类Dev

如何将文本框值分配给 wpf 中的另一个类

来自分类Dev

将具有依赖项属性的值从一个类绑定到wpf中的另一个类文本框控件

来自分类Dev

如何将对象属性绑定到 angular2 中的文本框

来自分类Dev

如何将图像插入文本框WPF

来自分类Dev

如何将图像插入文本框WPF

来自分类Dev

如何将文本框中的文本复制到 datagridview1 的 1 列?

来自分类Dev

将文本框绑定到属性

来自分类Dev

将文本框绑定到字典

来自分类Dev

将文本框绑定到属性

来自分类Dev

如何将selectedItem从不同的列表框绑定到一个文本框?

Related 相关文章

  1. 1

    如何将文本框绑定到类Property

  2. 2

    如何将文本框绑定到datetime字段,但仅显示其日期部分(在ASP.MVC中)?

  3. 3

    如何将文本框绑定到datetime字段,但仅显示其日期部分(在ASP.MVC中)?

  4. 4

    如何将文本框绑定到MS Access中子窗体的链接子字段?

  5. 5

    如何将文本框绑定到不在数据上下文类中的类

  6. 6

    将文本框值绑定到WPF中的模型

  7. 7

    如何将文本框对象绑定到ViewModel

  8. 8

    如何将文本框中的字体大小绑定到数据源?

  9. 9

    如何将列表绑定到ItemsControl中的文本框

  10. 10

    如何将ProgressBar值绑定到ResourceDictionary中的文本框?

  11. 11

    如何将文本框的长度绑定到文本块?

  12. 12

    如何将文本框文本绑定到集合的“当前”项目

  13. 13

    如何将文本框的文本与文件内容绑定?

  14. 14

    清除绑定到wpf中的静态属性的文本框

  15. 15

    如何根据条件将C#WPF文本框绑定到不同的属性?

  16. 16

    如何将xaml绑定到来自其他类的文本框

  17. 17

    如何将Winform文本框绑定到类属性?

  18. 18

    如何将简单的字符串值绑定到文本框?

  19. 19

    如何将2个文本框绑定到一个属性?

  20. 20

    如何将文本框值分配给 wpf 中的另一个类

  21. 21

    将具有依赖项属性的值从一个类绑定到wpf中的另一个类文本框控件

  22. 22

    如何将对象属性绑定到 angular2 中的文本框

  23. 23

    如何将图像插入文本框WPF

  24. 24

    如何将图像插入文本框WPF

  25. 25

    如何将文本框中的文本复制到 datagridview1 的 1 列?

  26. 26

    将文本框绑定到属性

  27. 27

    将文本框绑定到字典

  28. 28

    将文本框绑定到属性

  29. 29

    如何将selectedItem从不同的列表框绑定到一个文本框?

热门标签

归档