我在我的WPF应用程序中有一个选项卡控件,它有4个选项卡,每个选项卡有不同的数据网格, 我正在填充选项卡SelectionChanged上的数据网格。我有一个问题是,当我点击任何选项卡的数据网格时,会添加具有默认值的额外行。 我调试了一下,发现selectionChanged方法是打两次,当我点击数据网格 这是我的TabControl用的SelectionChangedWPF DataGrid TabControl中的行选择
<TabControl x:Name="tabControl" Grid.Row="1" SelectedValue="{Binding SelectedTab}" Style="{StaticResource Light-TabControlStyle}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cal:ActionMessage MethodName="LoadTabGrid" cal:View.Model="{Binding Source={StaticResource VMResource}}">
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
<TabItem Header="Users">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" MinWidth="140"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<DataGrid x:Name="dgotherUsers" ItemsSource="{Binding MyDS}" AutoGenerateColumns="False"
Grid.Column="1" >
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding UserName}" Header="Sets" Width="*" CanUserSort="False"/>
<DataGridTextColumn Binding="{Binding Age}" Header="Sits" Width="*" CanUserSort="False"/>
<DataGridTextColumn Binding="{Binding Gender}" Header="Sales" Width="*" CanUserSort="False"/>
<DataGridTextColumn Binding="{Binding Salary}" Header="ALP" Width="*" CanUserSort="False"/>
</DataGrid.Columns>
</DataGrid>
</Grid>
</TabItem>
</TabControl>
在我的ViewModel
public void LoadTabGrid()
{
//Updating MyDS
}
这是MyDS
ObservableCollection<UsersInfo> _usersInfo;
public ObservableCollection<UsersInfo> MyDS
{
get { return _usersInfo; }
set { _usersInfo= value; NotifyOfPropertyChange("MyDS"); }
}
我在我的数据网格中试过这个
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<cal:ActionMessage MethodName="DGSelection" cal:View.Model="{Binding Source={StaticResource VMResource}}">
</cal:ActionMessage>
</i:EventTrigger>
</i:Interaction.Triggers>
利用上述方法,DGSelection是打一次,LoadTabGrid被击中过,我需要停下来打LoadTabGrid当我点击数据网格或至少打这个方法只有一次,当我点击数据网格, 其工作正常,当我点击标签。 我应该为此做什么?
*我有一个问题是,当我点击任何选项卡的数据网格,它使网格的最后一行的所有列0 * ...请更好地解释你的问题(在你的问题,不在这里)。 – Sheridan
谢谢你告诉我已经更新了它 –
CanUserAddRows =“假” –