【发布时间】:2013-09-27 11:21:50
【问题描述】:
我有一个 WPF 应用程序,我正在使用 MVVM 设计方法。
我有一个 ObservableObject,它包含下面的类 Transaction 的列表;
public Transaction
{
public string Ammount;
public string Direction;
}
我的 ViewModel 中的 ObservableObject 在下面
public ObservableCollection<Transactions> ListOfUserTransactions
{
get { return _localTransactionData; }
set
{
_localTransactionData = value;
RaisePropertyChanged("ListOfUserTransactions");
}
}
而我的观点就是这样绑定的;
<DataGrid ItemsSource="{Binding ListOfUserTransactions}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Ammount" Binding="{Binding Path=Ammount}" Foreground="Black" IsReadOnly="True" />
<DataGridTextColumn Header="Direction" Binding="{Binding Path=Direction}" Foreground="Black" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>
这确实起作用,因为产生的行数等于我的预期,但所有行都是空的,我认为这是我绑定 DataGridTextColumn 的方式,但我不确定如何做,希望有上面的问题已经足够详细了。
编辑
以下是交易列表的创建方式
ObservableCollection<Transaction> _localTransactionData = new ObservableCollection<Transaction>();
public TransactionsViewModel(User passedThroughUser)
{
_user = passedThroughUser;
_listOfTransactions = _user.Transactions;
foreach (var item in _listOfTransactions)
{
LocalTransactionsList tran = new LocalTransactionsList();
tran.Ammount = item.Ammount.ToString(); ;
tran.Direction = item.Direction;
_localTransactionData.Add(tran);
}
}
【问题讨论】:
-
我没有运气,仍然是空白字段
-
你能展示一下Transaction的完整实现吗,我不想让你调试这些属性的getter,所以为每个属性添加一个私有值并返回并设置它。
-
您是否考虑过让您的文本列绑定到属性而不是字段?
-
不抱歉,我该怎么做?
-
我会在下面给出这个答案...
标签: wpf data-binding mvvm datagrid