我是 WPF 和绑定的新手,我想看看是否有办法在数组元素和控件之间进行双向绑定:
我的 ViewModel 有一个如下所示的属性:
public ObservableCollection<MeaseurementValue> MeasurementValues
{
get
{
return Config.MeasurementValues;
}
set
{
if (value == null) return;
Config.MeasurementValues = value;
OnPropertyChanged("MeasurementValues");
QpatConfig.SerializeConfigFile(Config,
Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.System)) + "//Qualcomm//QPAT//qpat.config");
}
}
其中 MeasurementValues 定义如下:
public class MeaseurementValue
{
public string TestName { get; set; }
public int value { get;set; }
}
Xaml 如下所示:
<TextBox HorizontalAlignment="Left" Grid.Column="1" Grid.Row="1" Height="23" Margin="14,20,0,0" TextWrapping="Wrap" Text="{Binding MeasurementValues[0].value, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" VerticalAlignment="Top" Width="124" />
因此,xaml 中的元素绑定到 ViewModel 中的 Arrayelement。但是当我在文本控件中更改该属性时,它不会调用 ViewModel 的设置器。
我还更改了我的代码,数组中的每个元素也是可通知的,因此如下所示:
public class MeaseurementValue : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string TestName { get; set; }
private int _value;
public int value
{
get { return _value; }
set { _value = value; OnPropertyChanged("value"); }
}
void OnPropertyChanged(string propertyName)
{
var handler = PropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(propertyName));
}
}
}
但这也没有用
与原始类型相反,我们与数组有什么不同吗?