-1
在我的項目中,我使用tabcontrol進行導航。 tabcontrol有三個tabitem,第二個tabitem是一個包含數據網格的用戶控件,第三個tabitem包含一個畫布。當我雙擊datagrid中的一行時,我希望UI跳轉到第三個tabitem並在畫布中繪製選定的行。我怎樣才能做到這一點?謝謝! 主窗口XAML如下:wpf從一個tabitem跳轉到另一個tabitem
<Window x:Class="PCClient.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PCClient"
xmlns:viewModel="clr-namespace:PCClient.ViewModels"
xmlns:controls="clr-namespace:PCClient.Controls"
mc:Ignorable="d"
Loaded="Window_Loaded"
WindowState="Maximized"
Title="MainWindow" Height="480" Width="600">
<Window.DataContext>
<viewModel:MainViewModel></viewModel:MainViewModel>
</Window.DataContext>
<Grid>
<TabControl>
<TabItem Header="數據採集" Padding="5">
<controls:ECGImportControl DataContext="{Binding Children[0]}"/>
</TabItem>
<TabItem Header="數據管理" Padding="5">
<controls:ECGImportRecordsControl DataContext="{Binding Children[1]}"/>
</TabItem>
<TabItem Header="ECG全屏" Padding="5">
<Grid>
<DockPanel LastChildFill="True">
<ScrollBar Orientation="Vertical" DockPanel.Dock="Right"/>
<Canvas Background="AliceBlue"/>
</DockPanel>
</Grid>
</TabItem>
</TabControl>
</Grid>
</Window>
和用戶控件如下:
<UserControl x:Class="PCClient.Controls.ECGImportRecordsControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:PCClient.Controls"
xmlns:convert="clr-namespace:PCClient.Converters"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300">
<UserControl.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="VerticalContentAlignment" Value="Center" />
</Style>
<convert:ConvertIntToString x:Key="convertIntToString"></convert:ConvertIntToString>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5*"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<TextBox Margin="5"/>
<Button Grid.Column="1" Content="查詢" Margin="5"/>
</Grid>
<DataGrid Grid.Row="1" Margin="5" ItemsSource="{Binding ImportRecords}" SelectedItem="{Binding SelectedImportRecord,Mode=TwoWay}"
CanUserSortColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" SelectionMode="Extended"
CanUserReorderColumns="False" RowHeaderWidth="0" CanUserAddRows="False" AutoGenerateColumns="False" EnableRowVirtualization="False" GridLinesVisibility="None">
<DataGrid.Columns>
<DataGridTemplateColumn Header="ID" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding PatientID}" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="姓名" Width="3*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding PatientName}" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="性別" Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding Sex,Converter={StaticResource convertIntToString}}" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="硬件ID" Width="2*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding DeviceID}" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="硬件類型" Width="2*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding DeviceType}" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="採集開始時間" Width="6*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding StartTime,StringFormat=yyyy-MM-dd HH:mm:ss}" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="採集結束時間" Width="6*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding EndTime,StringFormat=yyyy-MM-dd HH:mm:ss}" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="導入時間" Width="6*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid>
<TextBlock Text="{Binding UploadTime,StringFormat=yyyy-MM-dd HH:mm:ss}" HorizontalAlignment="Center" VerticalAlignment="Center" ></TextBlock>
</Grid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</UserControl>
謝謝你的回覆。問題是我不知道如何設置我的用戶控件內的tabcontrol狀態,因爲我無法得到我的用戶控件中的MainViewModel。我可以將一個屬性從Children [1]綁定到IsSelected of tabtiem 3嗎? –