Nice programing

WPF 버튼 이미지 '회색'?

nicepro 2020. 12. 9. 21:45
반응형

WPF 버튼 이미지 '회색'?


콘텐츠로 개체 Button를 포함하는 간단한 컨트롤이 있습니다 Image. 상태에 대한 추가 시각적 신호를 제공하기 위해 비활성화 Image될 때 불투명도를 0.5로 설정하고 싶습니다 .ButtonButton

XAML에서 그 결과를 달성하는 가장 간단한 방법은 무엇입니까? 당신의 도움을 주셔서 감사합니다.


이미지 스타일에서 트리거를 사용합니다. (버튼 스타일에 넣는 것이 더 자연 스럽지만 버튼 스타일은 성가신 기술적 인 이유로 이미지에 쉽게 영향을 줄 수 없습니다. 버튼의 ControlTemplate에서 수행 수 있지만 여기에서 원하는 것은 과잉입니다.)

<Button>
  <Image Source="something.png">
    <Image.Style>
      <Style TargetType="Image">
        <Style.Triggers>
          <Trigger Property="IsEnabled" Value="False">
            <Setter Property="Opacity" Value="0.5" />
          </Trigger>
        </Style.Triggers>
      </Style>
    </Image.Style>
  </Image>
</Button>

여기서는 Button이 비활성화되면 Image가 비활성화된다는 사실을 활용하고 있으므로 Image의 자체 IsEnabled 속성에서 직접 트리거 할 수 있습니다. 다른 경우에는 트리거하려는 Button 속성이 Image에 상속되지 않을 수 있습니다. 이 경우 포함하는 단추에 바인딩하려면 FindAncestor RelativeSource와 함께 DataTrigger를 사용해야합니다.


좀 더 일반적인 것을 원하면 창 또는 UserControl의 리소스 섹션에 넣으십시오.

<UserControl.Resources>     
    <Style x:Key="ImageEnabled" TargetType="Image">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Opacity" Value="0.25"></Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</UserControl.Resources>

그리고 실제 버튼에서 이렇게

<Button>
    <Image Source="{StaticResource LinkImage}" Style="{StaticResource ImageEnabled}"/>
</Button>

적용 할 수있는보다 일반적인 스타일은 다음과 같습니다.

<Style TargetType="Button">
    <Style.Resources>
        <Style TargetType="Image">
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Opacity" Value="0.5" />
                </Trigger>
            </Style.Triggers>
        </Style>
    </Style.Resources>
</Style>

전체 버튼을 회색으로 표시하려면 버튼 자체의 스타일을 지정하는 것이 좋습니다. 모든 버튼 콘텐츠가 회색으로 표시됩니다.

                    <Button.Style>
                        <Style TargetType="Button">
                            <Style.Triggers>
                                <Trigger Property="IsEnabled" Value="False">
                                    <Setter Property="Opacity" Value=".75"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Button.Style>

참고 URL : https://stackoverflow.com/questions/2530912/graying-out-a-wpf-button-image

반응형