私のプロジェクトでは、ナビゲーションにタブコントロールを使用します。 tabcontrolには3つのtabitemがあり、2番目のtabitemはdatagridを含むusercontrolで、3番目のtabitemにはキャンバスが含まれています。また、DataGridの行をダブルクリックすると、UIが3番目のtabitemにジャンプし、キャンバスに選択した行が描画されます。どうすればこれを達成できますか?ありがとう!次のように メインウィンドウのXAML:次のようにwpfが1つのタブアイテムから別のタブアイテムにジャンプ
<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>
ご返信ありがとうございます。質問は、私は私のUserControlの中にMainViewModelを得ることができないので、私はどのように私のusercontrolの中にtabcontrol状態を設定することができないのか分かりません。子供たちの財産をタブティーム3のIsSelectedにバインドできますか? –