1
我在两个不同的地方使用mvvm绑定datagrid时遇到了一个问题。我的数据网格(XAML)的头是:使用MVVM的Datagrid绑定WPF
<DataGrid Grid.Row="0" Grid.Column="0" AlternationCount="2" Background="White" RowHeight="28" HorizontalGridLinesBrush="Lavender" VerticalGridLinesBrush="Lavender"
VerticalContentAlignment="Stretch" HorizontalContentAlignment="Stretch" IsSynchronizedWithCurrentItem="True"
ScrollViewer.CanContentScroll="True" Name="MainGrid" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Visible"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch" AutoGenerateColumns="False" CanUserAddRows="False"
CanUserDeleteRows="False" CanUserResizeRows="True" ItemsSource="{Binding Path=Configurations, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}">
这clealy说
ItemsSource="{Binding Path=Configurations, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
在我的视图模型:
public ObservableCollection<ViewerConfiguration> Configurations
{
get { return m_tasks; }
set { m_tasks = value; OnPropertyChanged("Configurations"); }
}
,在列表中正确显示在视图中的数据,但问题在于插入和删除(即使更新成功)。 我有在配置对象
private void Refresh()
{
List<ViewerConfiguration> newlyAddedFiles = GetConfigurations();
foreach (ViewerConfiguration config in newlyAddedFiles)
{
Configurations.Add(config);
}
}
插入一个项目,并移除像功能:
Configurations.Remove(configuration);
的问题是真正与插入和删除。在调试时没有异常,它也成功从集合中删除,但UI没有收到通知。任何猜测为什么是这种行为?
此外: 我有一个事件触发刚下的DataGrid:
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RenderPdf}" CommandParameter="{Binding SelectedItem, ElementName=MainGrid}"></i:InvokeCommandAction>
</i:EventTrigger>
</i:Interaction.Triggers>
和我打电话从视图模型的构造刷新功能只是为了看看是否可行与否。
是你的删除,并添加生成一个事件?我怀疑它...... – 2015-02-08 16:37:00
@TMcKeown它确实如果它是一个ObservableCollection。 – 2015-02-08 16:37:59
发布完整的代码。你的问题不清楚。您目前显示的代码似乎没有任何问题。 – 2015-02-08 16:38:21