我有一个tabcontrol项目中的数据网格。 当我双击数据网格中的行时,我希望tabcontrol更改选项卡。
继承我的代码:
<TabItem
x:Name="tiDashboard"
Header="Dashboard"
Background="White">
<Grid>
<DataGrid
IsReadOnly="True"
x:Name="dgAnzeigeWerk"
AutoGenerateColumns="false"
Margin="0,10,0,249"
HeadersVisibility="Column"
RowHeight="25" HorizontalAlignment="Left" Width="492">
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridRow}">
<EventSetter Event="Control.MouseDoubleClick" Handler="dgAnzeigeWerk_Row_DoubleClick"/>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Width="auto" Header="Nummer" Binding="{Binding Kostenstellennummer}"/>
<DataGridTextColumn Width="auto" Header="Kostenstelle" Binding="{Binding Kostenstelle}"/>
<DataGridTextColumn Width="*" Header="Kosten" Binding="{Binding Kosten}"/>
</DataGrid.Columns>
</DataGrid>
<ComboBox x:Name="cbYearWerk" HorizontalAlignment="Left" Height="25" Margin="497,10,0,0" VerticalAlignment="Top" Width="98" VerticalContentAlignment="Center" SelectionChanged="cbYearWerk_SelectionChanged"/>
<Separator Height="15" Margin="0,-10,0,0" VerticalAlignment="Top"/>
</Grid>
</Grid>
</TabItem>
...
要更改tabitem我使用此代码:
private void dgAnzeigeWerk_Row_DoubleClick(object sender, MouseButtonEventArgs e)
{
tabControl.SelectedItem = tiUebersicht;
}
但是标签不会发生变化。我试着用一个按钮做相同的代码,它工作。
我也尝试了tabControl.SelectedIndex = 2
或tiUebersicht.IsSelected = true
,但没有成功。
有什么建议吗?
答案 0 :(得分:2)
最后将e.Handled = true;
添加到您的处理程序中。
private void dgAnzeigeWerk_Row_DoubleClick(object sender, MouseButtonEventArgs e)
{
tabControl.SelectedItem = tiUebersicht;
e.Handled = true;
}
实际上选择正在发生变化,但它的发生非常快,焦点又回到了包含DataGrid
的那个。这可以使用SelectionChanged
的{{1}}事件进行验证。
答案 1 :(得分:0)
尝试在事件中使用调度程序。
Dispatcher.InvokeAsync(() => tiUebersicht.IsSelected = true);
Dispatcher.Invoke(() => tiUebersicht.IsSelected = true);
Dispatcher.InvokeAsync(() => tabControl.SelectedItem = tiUebersicht);
Dispatcher.Invoke(() => tabControl.SelectedItem = tiUebersicht);