Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF数据网格IDataErrorInfo can';t通过数据绑定设置数据(错误?)_Wpf_Validation_Datagrid - Fatal编程技术网

WPF数据网格IDataErrorInfo can';t通过数据绑定设置数据(错误?)

WPF数据网格IDataErrorInfo can';t通过数据绑定设置数据(错误?),wpf,validation,datagrid,Wpf,Validation,Datagrid,相关问题: 您有以下DataGrid <DataGrid ItemsSource="{Binding .}" AutoGenerateColumns="False" x:Name="dg"> <DataGrid.Columns> <DataGridTextColumn Binding="{Binding Name, ValidatesOnDataErrors=True}" Header="Name" /> <Da

相关问题:

您有以下DataGrid

<DataGrid ItemsSource="{Binding .}" AutoGenerateColumns="False" x:Name="dg">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Name, ValidatesOnDataErrors=True}" Header="Name" />

        <DataGridTemplateColumn>
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <Button Command="{Binding ChangeNameCommand}">...</Button>
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>

    </DataGrid.Columns>
</DataGrid>

DataContext设置为ItemViewModel的ObservableCollection

您需要添加itemssource的信息。这是什么东西?仅实现IDataErrorInfo或任何其他功能的DataTable或对象?为什么需要一个按钮来设置Name属性的值?好的,我编辑我的问题并发布ItemViewModel的代码。我需要一个按钮f.e.来打开OpenFileDialog并设置文件或其他东西的路径。您需要添加项目资源的信息。这是什么东西?仅实现IDataErrorInfo或任何其他功能的DataTable或对象?为什么需要一个按钮来设置Name属性的值?好的,我编辑我的问题并发布ItemViewModel的代码。我需要一个按钮f.e.来打开OpenFileDialog并设置文件或其他内容的路径。
public class ItemViewModel : INotifyPropertyChanged, IDataErrorInfo
{
    public event PropertyChangedEventHandler PropertyChanged;

    protected void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    }

    private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name = value;
            OnPropertyChanged("Name");
        }
    }

    public string Error
    {
        get { return string.Empty; }
    }

    public string this[string columnName]
    {
        get
        {
            if (_name == "Error")
                return "Name is Error";

            return string.Empty;
        }
    }

    public ICommand ChangeNameCommand { get; protected set; }

    public ItemViewModel()
    {
        ChangeNameCommand = new RelayCommand(() => { Name = "Another Name"; });
    }
}