0

我在 Window.Resources 中放置了我的图像的样式:

    <Style TargetType="{x:Type Image}">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value="0.3" />
            </Trigger>
        </Style.Triggers>
    </Style>

我有一个工具栏:

        <ToolBarTray DockPanel.Dock="Top"  Background="Transparent">
            <ToolBar Band="0" BandIndex="0" x:Name="ToolbarCATIAAccess" Background="{DynamicResource linearGradBrushHellaTitanMenu}">
                <Button Name="ButtonInsertIntoProduct">
                    <Image x:Name="ImageInsertIntoProduct" Source="/HKBEStandardsFromPDMLibrary;component/Resources/InsertIntoCATIAProduct.png" 
                           ToolTip="insert files into active CATIA Product"/>
                </Button>
                <Button Name="ButtonCopyFilesToWIN">
                    <Image x:Name="ImageCopyFilesToWIN" Source="/HKBEStandardsFromPDMLibrary;component/Resources/CopyFilesToWIN.png" 
                           ToolTip="copy files to WIN folder"></Image>
                </Button>
            </ToolBar>
        </ToolBarTray>

这种风格适用于整个窗口上的所有图像,也适用于其他应用程序。但它不适用于工具栏中的第一个图像,无论哪个先出现都没有关系,第一个不设置不透明度。如果我将隐藏的(按钮)图像作为第一个图像添加到工具栏中,它适用于第一个可见的图像。

不工作风格

...
                <Button Name="ButtonCopyFilesToWIN_" Visibility="Collapsed">
                    <Image x:Name="ImageCopyFilesToWIN_" Source="/HKBEStandardsFromPDMLibrary;component/Resources/CopyFilesToWIN.png" 
                           ToolTip="copy files to WIN folder"></Image>
                </Button>
                <Button Name="ButtonInsertIntoProduct">
                    <Image x:Name="ImageInsertIntoProduct" Source="/HKBEStandardsFromPDMLibrary;component/Resources/InsertIntoCATIAProduct.png" 
                           ToolTip="insert files into active CATIA Product"/>
                </Button>
                ...

工作作风

这里有没有人知道可能是什么问题并可以帮助我?谢谢

4

1 回答 1

1

我已经获取了您的资源和工具栏代码片段,并将其放置在简单的应用程序中,以证明它是否有效,在我的示例中,它的行为符合我的预期。我将不透明度更改为 0,以使其在图像消失时变得明显。

片段中的图像是我的示例图像,只需还原为您的图像即可。通过在下面代码片段的图像中显式设置 IsEnabled 属性,您可以查看是否正在应用样式。这里第二个图像消失(因为 IsEnabled 为 false 并将样式的不透明度设置为 0),如果您交换图像上的 IsEnabled 属性,则第二个图像为真,第一个图像为假,则第一个图像消失。因此样式被应用于如下所示的基本示例应用程序。

<Window.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Dictionary1.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Window.Resources>
<Grid>
    <ToolBarTray DockPanel.Dock="Top"  Background="Transparent">
        <ToolBar Band="0" BandIndex="0" x:Name="ToolbarCATIAAccess" >
            <Button Name="ButtonInsertIntoProduct">
                <Image x:Name="ImageInsertIntoProduct" Source="scroll1.png" IsEnabled="True"
                       ToolTip="insert files into active CATIA Product"/>
            </Button>
            <Button Name="ButtonCopyFilesToWIN">
                <Image x:Name="ImageCopyFilesToWIN" Source="scroll2.png" IsEnabled="False"
                       ToolTip="copy files to WIN folder"></Image>
            </Button>
        </ToolBar>
    </ToolBarTray>
</Grid>

只有示例应用程序中的其他代码(Dictionary1.xaml - 资源字典文件):

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style TargetType="{x:Type Image}">
    <Style.Triggers>
        <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Opacity" Value="0" />
        </Trigger>
    </Style.Triggers>
</Style>

于 2014-07-05T14:59:05.750 回答