none
怎么设置item类控件的触发器关联到相关DataTemplate内的控件属性的改变? RRS feed

  • 问题

  •                     <TabControl.ItemContainerStyle>
                            <Style   TargetType="{x:Type TabItem}"  BasedOn="{StaticResource {x:Type TabItem}}"  >
                                <Style.Triggers>
                                    <Trigger  Property="IsMouseOver" Value="true">
                                        <Setter Property="Visibility" Value="Visible" TargetName="tabItemCloseBtn" /> //关联
                                    </Trigger>
                                </Style.Triggers>
                            </Style>
                        </TabControl.ItemContainerStyle>
                        <TabControl.ItemTemplate>
                            <DataTemplate>
                                <StackPanel  Orientation="Horizontal" >
                                    <TextBlock MaxWidth="200" Height="30" Text="{Binding Title}" />
                                        <Button Name="tabItemCloseBtn" FontSize="15" Content="x" Visibility="Collapsed" />  
                                </StackPanel>
                            </DataTemplate>
                        </TabControl.ItemTemplate>
    这是一个设置tabitem具体的style和DataTemplate代码,我想做的是,如果鼠标移动或选中一个tabItem上,那么tabitem的DataTemplate内的名为tabItemCloseBtn的button控件将显示出来。但在setter标签中的TargetName属性里直接写DataTemplate里的button的name是错误的,如何解决这个问题?不希望是把button放到TabItem的控件模板里这种方式
    2019年7月29日 9:52

全部回复

  • 将代码改为:

     <TabControl.ItemTemplate>
                    <DataTemplate>
                        <StackPanel  Orientation="Horizontal" >
                            <TextBlock MaxWidth="200" Height="30" Text="{Binding }" />
                            <Button Name="tabItemCloseBtn" FontSize="15" Content="x" Background="Transparent" BorderBrush="Transparent" Width="22" Visibility="Collapsed" />
                        </StackPanel>
                        <DataTemplate.Triggers>
                            <Trigger  Property="IsMouseOver" Value="true">
                                <Setter Property="Visibility" Value="Visible" TargetName="tabItemCloseBtn" /> 
                            </Trigger>
                        </DataTemplate.Triggers>
                    </DataTemplate>
                </TabControl.ItemTemplate>

    使用DataTemplate的trigger

    还有别的方式,不过这个很方便

    2019年7月30日 6:19