์๋
ํ์ธ์.
Button Over์ Background์ ์ด๋ฏธ์ง1์,
Button Leave์ Background์ ์ด๋ฏธ์ง2๋ฅผ ์ฌ๋ฆฌ๋ ค๊ณ ํฉ๋๋ค.
ํด๋น ๋ธ๋ก๊ทธ๋ฅผ ํตํด ์ ๊ทผ๋ฒ์ ์ฐพ์๊ณ ControlTemplate๋ฅผ ์ฌ์ฉํ์ฌ ์ด ๋ถ๋ถ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ง๋ฌธ๋๋ฆฝ๋๋ค.
Xaml UserControl.Resources
<UserControl.Resources>
<ControlTemplate TargetType="Button" x:Key="RoundButtonTemplate">
<Border Background="{TemplateBinding Background}" CornerRadius="15">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Border>
</ControlTemplate>
<Style TargetType="{x:Type Button}" x:Key="TriggerButtonOver">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding BtnUp}"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding BtnOver}"/>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
Button (Over, Leave)
<Button Width="100" Height="100" VerticalAlignment="Bottom" HorizontalAlignment="Right"
Margin="0,0,60,60"
Visibility="{Binding NextBtnVisibility}"
Command="{Binding CommandToNextPageU}"
Style="{StaticResource TriggerButtonOver}"
Template="{StaticResource RoundButtonTemplate}">
</Button>
ViewModel
public Color BtnUp
{
get { return Color.FromArgb(255, 0, 0, 0); }
}
public Color BtnOver
{
get { return Color.FromArgb(255,255,0,0); }
}
โ๋์ ์์์ ๊ด๋ฆฌํ๋ FrameworkElement ๋๋ FrameworkContentElement๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค.โ
๊ณผ ๊ฐ์ด Value์ ๊ฐ์ ์ง์ ๋ฃ์ด์ฃผ๋ ๊ฒฝ์ฐ, ๋ฌธ์ ๊ฐ ์์์ง๋ง
ํด๋น ๋ถ๋ถ์ Binding ์ฒ๋ฆฌ๋ฅผ ํ๋ ์์ ๊ฐ์ Xaml ์ค๋ฅ๊ฐ ๋ํ๋ฉ๋๋ค.
๊ธฐ๋ฅ ์์๋ ๋ฌธ์ ๊ฐ ์์ด๋ณด์ด๋๋ฐ, ์๋ชป๋ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋ฉด ์ข์์ง ๊ถ๊ธํ์ฌ ์ง๋ฌธ๋๋ฆฝ๋๋ค.. ๋์์ฃผ์ธ์..ใ
ใ
1๊ฐ์ ์ข์์
๊ทธ๋ฅ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๋ก Background์์ฑ์ Brush๋ฅผ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ ํ์๋ฉด ๋ฉ๋๋ค.
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="False">
<Setter Property="Background" Value="{Binding BtnUp}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{Binding BtnOver}"/>
</Trigger>
</Style.Triggers>
public Brush BtnUp
{
get { return (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFF0000")); }
}
public Brush BtnOver
{
get { return (SolidColorBrush)(new BrushConverter().ConvertFrom("#FFFFFF00")); }
}
๊ทธ๋ฐ๋ฐ ๊ทธ๋ฅ ์ฝ๊ธฐ ์ ์ฉ ์์ฑ ๋์์ ๋ฐ์ธ๋ฉ ์ฒ๋ฆฌ ํ๋ ๊ฒ์ ์๋ฏธ๊ฐ ์์ต๋๋ค.
์ฝ๊ธฐ์ ์ฉ ์์ฑ์ ๋ฐ์ธ๋ฉ ํ๊ธฐ ๋ณด๋จ ๊ทธ๋ฅ ํ๋์ฝ๋ฉ์ผ๋ก ๊ฐ์ ์ง์ ํ ๋น ํ์๋๊ฒ์ด ๋ซ์ต๋๋ค.
3๊ฐ์ ์ข์์
๋ฌผ๋๋ฉด์ด๋จน๊ณ ์ถ์ด์:
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding BtnOver}"/>
</Setter.Value>
</Setter>
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="{Binding BtnOver}"/>
</Setter>
</Trigger>
@aroooong ๋์ด ๋จผ์ ์ฌ๋ ค์ฃผ์
จ๋ค์
2๊ฐ์ ์ข์์
์ค! ใ
ใ
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค! ๋๋ถ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
์ค์ ๋ก๋ ๋์ ์ผ๋ก ๋ก๋๋ ์ด๋ฏธ์ง๋ฅผ Background์ ImageBrush๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฆฌ๋ ค ํ๊ณ ์์ต๋๋ค.
๋ฒํผ์ Up, Down ์ํ์ ๋ฐ๋ฅธ ์ด๋ฏธ์ง๊ฐ ๋น๋๋ ๋ฐ์ด๋๋ฆฌ์
์ง์์ ์ผ๋ก ์ด๋ฏธ์ง๋ง ๊ต์ฒดํ์ฌ ์ฌ์ฉํด์ผํฉ๋๋คโฆ ใ
ใ
(์ ์ ๊ฐ ์ง์ ๊ต์ฒดํ ์ ์๋๋ก)
๋๋ฌธ์ ์ง๊ธ์ ํ๋ก๊ทธ๋จ ์คํ ์ ์ ํด์ง ๊ฒฝ๋ก์์ ์ด๋ฏธ์ง๋ฅผ ๋ถ๋ฌ ์ ์ฅ์ํค๊ณ
์๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ฒํผ์ ์ด๋ฏธ์ง๋ง Binding ์ฒ๋ฆฌํ๋๋ฐ ํน์ ์ด ๋ฐฉ๋ฒ๋ ์๋ชป๋ ๋ฐฉ๋ฒ์ผ๊น์โฆ?
ํ๋ก๊ทธ๋จ ๊ฒฝํ์ด ์งง์์ ์ข์ ๊ตฌ์กฐ๋ฅผ ์ค๊ณํ๋๋ฐ ์ด๋ ค์์ด ์์ต๋๋ค.
์ ์์ ์ธ ๋ฐฉ๋ฒ์ด ์๋ค๋ฉด ํค์๋ ์ข ๋ถํ๋๋ฆด๊ฒ์
public ImageBrush BtnOver
{
get { return new ImageBrush(_resourceManager.btnINext[1]); }
}
public ImageBrush BtnUp
{
get { return new ImageBrush(_resourceManager.btnINext[0]); }
}
1๊ฐ์ ์ข์์
๋ฌผ๋๋ฉด์ด๋จน๊ณ ์ถ์ด์:
public ImageBrush BtnOver
{
get { return new ImageBrush(_resourceManager.btnINext[1]); }
}
public ImageBrush BtnUp
{
get { return new ImageBrush(_resourceManager.btnINext[0]); }
}
์ด๋ ๊ฒ ์ฝ๊ธฐ ์ ์ฉ ์์ฑ์ ์ด์ฉํ๋ฉด ํด๋น ์ปจํธ๋กค์ ์ฌ์ฉํ๋ ์
์ฅ์์๋ ํด๋น ๊ธฐ๋ฅ์ ๋ํ โ์ค์ โ ์ ํ๊ถ์ด ์๊ณ , ์ด๋ฏธ์ง๊ฐ ๋ณ๊ฒฝ ๋๋ค๋๊ฐ ํ ๊ฒฝ์ฐ ์ง์ ํด๋น ์ปจํธ๋กค ์์ฒด๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
๋ํ ํด๋น ์ปจํธ๋กค์ด ์์ ๋๋ค๋ฉด ์ฌ์ฉ๋๋ ์ชฝ์์๋ 2์ฐจ ๋ณ๊ฒฝ์ ํด์ผ ํ๋ ๋ฐ์๋ ์์ ์ ์๊ตฌ์
๊ฐ๋ฐ ๊ด์ ์ผ๋ก ๋ณด์์๋
ํด๋น ์ปจํธ๋กค์ ์ ๊ณตํ๋ ์
์ฅ์์ ์ด๋ฏธ์ง๋ฅผ ์ง์ ๋ฐ์ธ๋ฉํด์ ์ฌ์ฉ ํ ์ ์๋๋ก '๊ธฐ๋ฅโ์ ์ ๊ณตํด ์ฃผ๋ ๊ฒ์ด ์ข์ต๋๋ค.
<์ด๋ฏธ์ง๋ฒํผ Normal="{Binding ~~~}"
Over="{Binding ~~~~~~}" />
์ฒ๋ผ์
๋ค์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํด์ ์ด๋ฏธ์ง๋ฒํผ ์์ฒด์ ์ปค์คํ
์ปจํธ๋กค ๋ง๋ค์ด ์ฌ์ฉ ๋ ์ ์๋๋ก ํด๋ณด์ธ์.
[์ด๋ฏธ์ง ๋ฒํผ ์ปค์คํ
์ปจํธ๋กค]
WPFKakaoTalk/Common/Controls/ImageButton.cs at master ยท tyeom/WPFKakaoTalk (github.com)
[์คํ์ผ]
WPFKakaoTalk/Common/Themes/Generic.xaml at master ยท tyeom/WPFKakaoTalk (github.com)
3๊ฐ์ ์ข์์
๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค! +
๋๋ถ์ ์ด๋ป๊ฒ ๋ฐฉํฅ์ฑ์ ์ค์ ํ๊ณ ์ข์ ์ค๊ณ๋ฅผ ํ ์ ์๋์ง์ ๋ํด ์๊ฒ ๋์์ต๋๋ค.
1๊ฐ์ ์ข์์