WPF 버튼 이미지를 '회색'하시겠습니까?
간단한 것이 있습니다.Button
포함하는 컨트롤Image
내용으로서 이의를 제기합니다.나는 원하기 때문에 설정합니다.Image
0.5의 불투명도는 다음과 같습니다.Button
에 대한 추가 시각적 신호를 제공하기 위해 비활성화됩니다.Button
상황.
XAML에서 그 결과를 얻는 가장 간단한 방법은 무엇입니까?도와주셔서 고마워요.
이미지 스타일에서 트리거를 사용합니다. (버튼 스타일에 넣는 것이 더 자연스럽지만, 버튼 스타일은 성가신 기술적인 이유로 이미지에 쉽게 영향을 줄 수 없습니다.버튼의 제어 템플릿에서 수행할 수 있지만, 여기서 원하는 것에 비해 너무 많습니다.)
<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>
버튼이 비활성화되면 이미지가 비활성화되므로 이미지 자체의 IsEnabled 속성에서 직접 트리거할 수 있습니다.다른 경우에는 트리거하려는 Button 속성이 이미지에 상속되지 않을 수 있습니다. 이 경우에는 FindEstor RelativeSource와 함께 DataTrigger를 사용하여 포함된 버튼에 바인딩해야 합니다.
더 일반적인 것을 원하는 경우 창 또는 사용자 컨트롤의 리소스 섹션에 이 정보를 저장합니다.
<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>
이전 솔루션은 불투명도만 변경하고 이미지 색상은 변경하지 않습니다. 다음과 같이 이미지를 그레이스케일로 변환해야 합니다.toggleButton용으로 했는데 버튼에도 동일한 방법을 사용할 수 있습니다.
<ToggleButton>
<ToggleButton.Style>
<Style TargetType="{x:Type ToggleButton}">
<Setter Property="Content">
<Setter.Value>
<Image
RenderOptions.BitmapScalingMode="HighQuality"
RenderOptions.EdgeMode="Aliased"
Source="/Resources/imageForButton.png"
Stretch="UniformToFill" />
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Content">
<Setter.Value>
<Image
RenderOptions.BitmapScalingMode="HighQuality"
RenderOptions.EdgeMode="Aliased"
Stretch="UniformToFill">
<Image.Source>
<FormatConvertedBitmap
x:Name="myImageFormat"
DestinationFormat="Gray8"
Source="/Resources/imageForButton.png" />
</Image.Source>
</Image>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ToggleButton.Style>
</ToggleButton>
언급URL : https://stackoverflow.com/questions/2530912/graying-out-a-wpf-button-image
'programing' 카테고리의 다른 글
Postgresql 서버에서 postgres라는 기본 데이터베이스 (0) | 2023.05.21 |
---|---|
텍스트 파일을 만들고 bash를 사용하여 채웁니다. (0) | 2023.05.21 |
PostgreSQL 모든 내용 삭제 (0) | 2023.05.21 |
원격 Git 저장소의 분기를 하나만 가져오려면 어떻게 해야 합니까? (0) | 2023.05.21 |
WebAPI 클라이언트에서 호출당 새 HttpClient를 생성할 때 발생하는 오버헤드는 얼마입니까? (0) | 2023.05.21 |