代码之家  ›  专栏  ›  技术社区  ›  Mark Denom

我的数据绑定是如何写出长度属性的?

  •  1
  • Mark Denom  · 技术社区  · 6 年前

    因此,我设置了一个viewmodel,它将 ObservableCollection<string> 到我的DataGrid。

    它可以很好地打印出值,但也可以打印出属性的长度?我不记得在任何绑定中设置过。为什么会这样?

    Visual representation of what it looks like

    我的主窗口。cs公司

    public MainWindow()
    {
        InitializeComponent();
        DataContext = new MasterViewModel();
    }
    

    MasterViewModel。cs公司

    class MasterViewModel
    {
        public Users Users { get; } = new Users();
        public Achievements Achievements { get; } = new Achievements();
    }
    

    用户。cs公司

    class Users : INotifyPropertyChanged
    {
        public Users()
        {
            newList.Add("Hello there");
        }
    
        private ObservableCollection<string> newList = new ObservableCollection<string>();
    
        public ObservableCollection<string> NewList
        {
            get { return newList; }
            set { newList = value; }
        }
    
    
        public event PropertyChangedEventHandler PropertyChanged;
        private void OnPropertyChanged(string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
    

    XAML

    <DataGrid ItemsSource="{Binding Users.NewList}" Width="400" Height="200" Margin="182,158,210,61">
        <DataGrid.Columns>
            <DataGridTemplateColumn>
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding}"></TextBlock>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>
    
    2 回复  |  直到 4 年前
        1
  •  1
  •   ASh aminescm    6 年前

    DataGrid具有属性 AutoGenerateColumns 设置为 True 默认情况下,并使DataGrid为项中定义的每个属性创建一列。

    DataGrid已绑定到 NewList 其中包含类型为 string 具有长度属性。所以 Length

    您可以通过设置禁用自动生成 <DataGrid AutoGenerateColumns="False" ...

        2
  •  0
  •   Mark Denom    6 年前

    我忘了添加属性 AutoGenerateColumns="False" 。 不知道为什么默认设置为true,或者为什么选择 length 所有属性的属性,但我想我已经修好了。