更改数据网格中的单元格中的值(绑定)

时间:2015-02-27 20:01:41

标签: c# wpf binding datagrid cell

这是我的问题。

当我选择单行并单击按钮时,单元格必须更改值,但它不会更改任何内容

enter image description here

这是XAML代码。

        <DataGrid 

        ItemsSource="{Binding Dati_Viaggio, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
        SelectedItem="{Binding SelectDati_Viaggio, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"

        AutoGenerateColumns="False" HorizontalAlignment="Left" Height="119" Margin="10,10,0,0" VerticalAlignment="Top" Width="497">

        <DataGrid.Columns>
            <DataGridTextColumn x:Name="NumOrd" Binding="{Binding Path=NumOrd, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  Header="NumOrd" Width="150" />
        </DataGrid.Columns>

    </DataGrid>

这是c#code

Public ObservableCollection<Model_Ricerca_Dati_Viaggio> Dati_Viaggio 
{ get; set; }
private Model_Ricerca_Dati_Viaggio _SelectDati_Viaggio;
public Model_Ricerca_Dati_Viaggio SelectDati_Viaggio {
get { return _SelectDati_Viaggio; }
set {
    _SelectDati_Viaggio = value;
    OnPropertyChanged("SelectDati_Viaggio");}}

private string _NumOrd { get; set; }
public string NumOrd {
get { return _NumOrd; }
set {
    _NumOrd = value;
    OnPropertyChanged("NumOrd");}}

Private void Cmd_TrovaExe()
{
SelectDati_Viaggio.NumOrd = Now.@string;

OnPropertyChanged("NumOrd");
OnPropertyChanged("Dati_Viaggio");
OnPropertyChanged("SelectDati_Viaggio");
}

为什么在 SelectDati_Viaggio.NumOrd = Now之后,单元格没有反射。@ string; ?

1 个答案:

答案 0 :(得分:1)

您的班级Model_Ricerca_Dati_Viaggio必须实施INotifyChanged界面,以便将更改内容公开给用户界面:

  public class Model_Ricerca_Dati_Viaggio:INotifyPropertyChanged
{
    private string _numOrd ;
    public string NumOrd  
    {
        get
        {
            return _numOrd;
        }

        set
        {
            if (_numOrd == value)
            {
                return;
            }

            _numOrd = value;
            OnPropertyChanged("NumOrd");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }
}
相关问题