簡體   English   中英

WPF按鈕禁用時更改Rectangle.OpacityMask

[英]WPF Button change Rectangle.OpacityMask when disable

我無法為我的問題管理解決方案。

這是我的按鈕

<Button BorderBrush="Black" IsDefault="True" IsEnabled="{Binding ContentManager.CanPreview}" x:Name="Preview" Grid.Column="1" Style="{DynamicResource MetroCircleButtonStyle}">
    <Button.ToolTip>
        <ToolTip>
            <StackPanel>
                <TextBlock FontWeight="Bold">Preview</TextBlock>
                <TextBlock>Preview the selected document</TextBlock>
            </StackPanel>
        </ToolTip>
    </Button.ToolTip>
    <Rectangle Margin="1,0,0,0" Width="17" Height="12" Fill="Black">
        <Rectangle.OpacityMask>
            <VisualBrush Stretch="Fill" Visual="{StaticResource appbar_eye}" />
        </Rectangle.OpacityMask>
        <Rectangle.Style>
            <Style>
                <Style.Triggers>
                </Style.Triggers>
            </Style>
        </Rectangle.Style>
    </Rectangle>
</Button>

我的問題是,當按鈕未啟用時,如何設置觸發器以更改<VisualBrush Stretch="Fill" Visual="{StaticResource appbar_eye}" />

創建一個針對Rectangle類的Style ,將OpacityMaskStyle作為Setter ,否則Style.Trigger將無法更改本地值,並在IsEnabled屬性上創建一個Trigger為false,以將OpacityMask更改為其他Brush

<Rectangle Margin="1,0,0,0" Width="17" Height="12" Fill="Black">
   <Rectangle.Style>
      <Style TargetType="{x:Type Rectangle}">
         <Setter Property="OpacityMask">
            <Setter.Value>
               <VisualBrush Stretch="Fill" Visual="{StaticResource appbar_eye}" />
            </Setter.Value>
         </Setter>
         <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
               <Setter Property="OpacityMask">
                  <Setter.Value>
                     <!-- other brush -->
                  </Setter.Value>
               </Setter>
            </Trigger>
         </Style.Triggers>
      </Style>
   </Rectangle.Style>
</Rectangle>

也許將其他視覺畫筆作為資源添加到您的usercontrol / window / app

<Style.Resources>
            <VisualBrush x:Key="otherBrush" Stretch="Fill"  Visual="{StaticResource other_appbar_eye}" ></VisualBrush>

並像這樣在觸發器中使用它

<Rectangle.Style>
    <Style TargetType="Rectangle">
         <Style.Triggers>
              <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="OpacityMask" Value="{StaticResource otherBrush}"/>
              </Trigger>
          </Style.Triggers>
     </Style>
 </Rectangle.Style>

並將默認值也移到樣式中,因為否則您將無法通過觸發器來更改它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM