【问题标题】:Databinding error 40 dataGrid2d数据绑定错误 40 dataGrid2d
【发布时间】:2017-03-06 15:16:08
【问题描述】:

由于Two way binding between DataGrid and an array我想做这样一个grid,但是还是有错误不知道怎么消除。

所有代码如下:

public partial class MainWindow : Window
{
    private string[,] _data2D;
    public string[,] Data2D
    {
        get { return _data2D; }
        set { _data2D = value; }
    }
    public MainWindow()
    {
        _data2D = new string[9 , 9];
        for (int i = 0; i < 9; i++)
            for (int j = 0; j < 9; j++)
                _data2D[i, j] = "0";
        InitializeComponent();
        dataGrid2D.DataContext = this;
    }
}

还有 XAML:

<Window x:Class="test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:test"
        mc:Ignorable="d"
        xmlns:dg2d="clr-namespace:DataGrid2DLibrary;assembly=DataGrid2DLibrary"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <dg2d:DataGrid2D Background="Azure" UseModifiedDataGridStyle="true" HorizontalAlignment="Left" VerticalAlignment="Top" ColumnWidth="30" DataContext="this"
                         RowHeight="30" HeadersVisibility="None" Name="dataGrid2D" ItemsSource2D="{Binding Data2D}"/>
    </Grid>
</Window>

和错误:

System.Windows.Data Error: 40 : 

BindingExpression path error: 

'Data2D' property not found on 'object' ''String' (HashCode=1178749465)'. 

BindingExpression:Path=Data2D; DataItem='String' (HashCode=1178749465);

target element is 'DataGrid2D' (Name='dataGrid2D'); 

target property is 'ItemsSource2D' (type 'IEnumerable')

有人知道如何帮助我吗?它有时会导致并非所有控件都呈现:/ 有时某些控件会呈现一半等。

【问题讨论】:

  • 网格不显示
  • 是的,它可以工作,但无论如何它都有错误,如果有很多控件,有时所有渲染有时都不会。正是因为这个绑定,当我禁用它时,所有控件总是呈现
  • 在哪里可以看到这个错误?
  • 调试输出窗口

标签: c# wpf data-binding


【解决方案1】:

你在两个地方设置了DataContext

MainWindow():

dataGrid2D.DataContext = this;

XAML 你有:

DataContext="this"

从您的XAML 中删除DataContext 属性:

<dg2d:DataGrid2D Background="Azure" UseModifiedDataGridStyle="true" HorizontalAlignment="Left" VerticalAlignment="Top" ColumnWidth="30" 
                         RowHeight="30" HeadersVisibility="None" Name="dataGrid2D" ItemsSource2D="{Binding Data2D}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 2019-12-20
    • 2021-02-13
    • 1970-01-01
    • 2018-03-27
    • 2018-05-15
    • 2011-02-24
    相关资源
    最近更新 更多