반응형
XAML 작업을 해보다 보면 특정 값에 따라 StaticResource가 변화시켜야하는 상황들이 있다.
나의 경우에서는 Icon을 DrawingImage로 만들어서 StaticResource로 참조하여 사용하고 있었는데 타입별로 이 Icon이 바뀌어야했다.
Type 별로 Image를 선언하고 Visible을 제어하기보단 Source의 내용을 StaticSource의 값을 변화시키는게 더욱 효율적일 것이다.
<DrawingImage x:Key="IconPerson">
<!--Icon 내용-->
</DrawingImage>
<DrawingImage x:Key="IconCar">
<!--Icon 내용-->
</DrawingImage>
위와 같이 Image Source에 넣기 위한 IconPerson과 IconCar라는 DrawingImage StaticSource가 있다.
public class IconConverter : IValueConverter
{
public DrawingImage Person { get; set; }
public DrawingImage Car { get; set; }
public override object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
ProjectType type = (IconType)value;
switch (type)
{
case IconType.Person: return Person;
case IconType.Car: return Car;
default: return null;
}
}
}
위와 같이 StaticSource로 받을 Property인 Person과 Car를 받아서 IconType별로 해당 Property를 반환해주는 Converter를 만들어주자.
이것을 실제로 사용하라면 아래와 같다.
<UserControl.Resources>
<Converter:IconConverter x:Key="IconConverter"
Car="{StaticResource IconCar}"
Person="{StaticResource IconPerson}"/>
</UserControl.Resources>
<Grid>
<Image Source="{Binding Path=IconType, Converter={StaticResource IconConverter}}"/>
</Grid>
반응형
'프로그래밍 > WPF' 카테고리의 다른 글
[WPF] Binding SelectedItems (ItemsControl, DataGrid 등) (0) | 2022.12.07 |
---|---|
[WPF] File Drag & Drop MVVM Pattern using Behavior (0) | 2022.12.07 |
[WPF] ContextMenu Binding in TreeView (0) | 2022.11.28 |
[WPF] Value Converter Default (0) | 2022.11.04 |
[WPF] Visibility Control based on ComboBox Selection (0) | 2022.10.22 |