【发布时间】:2011-07-12 04:59:53
【问题描述】:
如果有人可以帮助我解决我遇到的绑定问题,我正在徘徊?
代码片段:
<DataGrid AutoGenerateColumns="False" Grid.Column="1" Grid.Row="1" SelectionMode="Single" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding PersonList}" CanUserSortColumns="True" SelectedItem="{Binding Path=SelectedPerson}" >
<DataGrid.Columns>
<DataGridTextColumn Header="FirstName" Width="100" Binding="{Binding FirstName}" />
<DataGridTextColumn Header="LastName" Width="100" Binding="{Binding LastName}" />
<DataGridTemplateColumn Width="140" Header="Operator">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding Path=OperatorList}" DisplayMemberPath="FullName" SelectedValue="{Binding Path=SelectedOperator}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
...
</DataGrid>
以上是视图中的sn-p代码:
列表中的每个人都是自己的视图模型,代码如下:sn-p:
CollectionView _operatorList;
public CollectionView DebtorAgentList { get { return _operatorList; } }
Model.Operator _selectedOperator;
public Model.Operator SelectedOperator
{...}
现在我遇到的问题是 SelectedValue 绑定不起作用,我不知道为什么?但是使它变得棘手或不同(也许)的是数据网格中的每一行都有自己的 viewmodel ,因此换句话说就是视图模型的数据网格。那么发生的事情是 FirstName 和 LastName 以及 Combobox 都正确填写,但我似乎无法让 SelectedValue 绑定? 附言这不是因为一些拼写错误,如果有拼写错误是因为我在写问题时重命名了方法等。
更多细节:
上面的数据网格是一个视图的一部分,它有自己的视图模型,这个视图模型用一个人列表填充上面的数据网格,每个人本质上都是一个视图模型(它不是真正的视图模型,但又是它的更多的是视图模型而不是平面模型)。在我尝试绑定 SelectedView 属性之前,它会按照我需要的方式工作吗?
有人可以告诉我为什么该绑定可能不起作用吗?
提前致谢:D
【问题讨论】:
-
SelectedMode 绑定模式需要两种方式吗?您是否触发了属性更改事件?
-
我尝试设置 selectedMode,但这没有做任何事情(默认情况下不是双向的),是的,它应该触发属性更改事件,但我会尝试在某些地方强制它,看看会发生什么:)
-
模式默认为单向。您的代码没有显示任何 INotifyPropertyChanged 的实现,所以我不确定。
-
哦,真的谢谢,我现在解决了,但谢谢