1

所以我有这个控制模板,我希望信号名称面板(只是一个时间标签,我将在它旁边添加一个 x 轴)只有在项目绑定到 Treeview 时才可见。

否则它会看起来很奇怪,因为名称面板会自行浮动在那里。我猜我需要使用某种触发器,但我不确定我会触发什么。

<Style x:Key="{x:Type TreeView}" TargetType="TreeView">
      <Setter Property="OverridesDefaultStyle" Value="True" />
      <Setter Property="SnapsToDevicePixels" Value="True" />
      <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
      <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
      <Setter Property="Template">
        <Setter.Value>
          <ControlTemplate TargetType="TreeView">

              <ScrollViewer 
                Focusable="False"
                CanContentScroll="False"
                Padding="4">
                <StackPanel>
                  <Grid>
                    <Grid.ColumnDefinitions>
                      <ColumnDefinition Width="19" />
                      <ColumnDefinition Width="*" />
                      <ColumnDefinition Width="{Binding ElementName=graph_viewer, Path=signal_graph_window_width, Mode=OneWay}" />
                    </Grid.ColumnDefinitions>
                    <wpfExp:SignalNamePanel Grid.Column="1"
                      Height="{Binding ElementName=graph_viewer, Path=GraphHeight, Mode=OneWay}"
                      MainText="Time" 
                    />
                    <wpfExp:SignalGraphAxis Grid.Column="2"
                      Height="{Binding ElementName=graph_viewer, Path=GraphHeight, Mode=OneWay}"                
                      PenWidth="{Binding ElementName=graph_viewer, Path=GraphPenWidth, Mode=OneWay}"
                      X_Scale="{Binding ElementName=graph_viewer, Path=X_Scale, Mode=OneWay}"
                      MaxTimeValue="{Binding ElementName=graph_viewer, Path=_SignalDataViewModel.MaxTimeValue, Mode=OneWay}"
                    />
                  </Grid>

                  <ItemsPresenter/>
                </StackPanel>
              </ScrollViewer>
            <ControlTemplate.Triggers>
              <Trigger Property="IsMouseOver"
                                   Value="True">
                <Setter TargetName="ExpandPath"
                                      Property="Stroke"
                                      Value="#FF1BBBFA"/>
                <Setter TargetName="ExpandPath"
                                      Property="Fill"
                                      Value="Transparent"/>
              </Trigger>
              </ControlTemplate.Triggers>
          </ControlTemplate>
        </Setter.Value>
      </Setter>
    </Style>
4

1 回答 1

5

嗨,您可以在 Trigger 中使用 HasItems。

XAML:
<Trigger Property="ItemsControl.HasItems" Value="True">
 <Setter Property="Visibility" TargetName="Name" Value="Collapsed"/>

</Trigger>
于 2013-07-03T04:17:44.313 回答