У меня есть элемент управления вкладками в моем приложении WPF, он имеет 4 вкладки, каждая вкладка имеет разные datagrid, Я заполняю datagrid на вкладке SelectionChanged. Сетки заполняются должным образом. У меня проблема: при нажатии на datagrid любой вкладки добавляется дополнительная строка со значениями по умолчанию. я отлажена его и обнаружил, что метод SelectionChanged бьет два раза, когда я нажав на DataGrid Это мой 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"); }
}
Я пробовал это в своем datagrid
<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 при нажатии на сетке или по крайней мере ударил этот метод только один раз, когда я нажимаю на DataGrid, Его работает нормально, когда Я нажимаю на вкладку. Что я должен сделать для этого?
* У меня возникла проблема в том, что когда я нажимаю на datagrid любой вкладки, он делает все столбцы последней строки сетки равными 0 * ... пожалуйста, объясните вашу проблему лучше (в ваш вопрос, а не здесь). – Sheridan
Спасибо за рассказ, я его обновил –
CanUserAddRows = "false" –