2017-07-17 4 views
-1

私のプロジェクトでは、ナビゲーションにタブコントロールを使用します。 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> 

答えて

0

あなたがTabItemsの一定の数を持っている場合は、このようなIsSelectedで行くことができます。

<TabControl> 
     <TabItem IsSelected="{Binding IsFirstTabSelected,Mode=TwoWay}"> 
      <TextBlock>First Tab</TextBlock> 
     </TabItem> 
     <TabItem IsSelected="{Binding IsSecondTabSelected,Mode=TwoWay}"> 
      <TextBlock>Second Tab</TextBlock> 
     </TabItem> 
    </TabControl> 

ますViewModelにバインドするのではなく、TriggersVisualStateManagerも使用できます。

正しいイベントが表示されていることを確認してください。または、イベントメソッドのe.Handledfalseに設定して、「ブロッキング」イベントを上書きします。あなたのイベントをブロックするFrameworkElementsIsHitTestVisible=falseと行くことがあります。あなたの質問は少し広いです。

+0

ご返信ありがとうございます。質問は、私は私のUserControlの中にMainViewModelを得ることができないので、私はどのように私のusercontrolの中にtabcontrol状態を設定することができないのか分かりません。子供たちの財産をタブティーム3のIsSelectedにバインドできますか? –

関連する問題