왠지 곱슬에.. 지저분해 보이는 머리가 너무 싫었다.
2:8 가르마를 연상시키고 M자를 연상 시키는 머리..
가끔 싫어진다.
그래서 오늘 과감하게. ^^
머리 자르는 분도 옆짱구라고 바로 되받아 친다.
그러면서 몽창몽창 머리를 잘랐다.
나름.. 괜찮아 보인다. (나만 그러겠지만. -.-)
역시. 이발은 여자가 많은 헤어샵이 좋다. ..
나이 들어서 그러겠지?... 그래도 모.. 좋다. ㅋㅋ
Gsi Image Viewer
내용 : CxImage를 이용한 MFC 버전 이미지 뷰어 (확대 가능)
코드 기술 :
1. MFC 를 이용, ListCtrl을 사용하였음
2. CxImage를 이용해서 DC에 이미지 출력
관련 이미지 :
아래의 코드는 Convert의 내용입니다.
[ValueConversion(typeof(double), typeof(decimal))]
class DoubleToDecimalConverter : IValueConverter
{
public object Convert(object value, Type typeTarget, object param, CultureInfo culture)
{
decimal num = new decimal((double)value);
if (param != null)
num = Decimal.Round(num, Int32.Parse(param as string));
return num;
}
public object ConvertBack(object value, Type typeTarget, object param, CultureInfo culture)
{
return Decimal.ToDouble((decimal)value);
}
}
여기서 보시면 위쪽의 [ValueConversion(typeof(double), typeof(decimal))] 의 내용은 사실상 없어도 에러가 나거나 하지는 않습니다. 하지만 WPF 문서에서 보게 되면 이 구문을 클래스 정의의 바로 밑에 포함하게 권고 하고 있습니다. 제가 봐도 들어가 있을때 가독성 부분에서는 조금더 유연해 지지 않을까 생각 됩니다.
Convert를 xaml 코드에 연동하는 부분은 이전 강좌의 소스 코드 부분에 바로 적용해봤습니다.
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:src="clr-namespace:WpfApplication1"
Title="Window1" Height="300" Width="300">
<Window.Resources>
<src:DoubleToDecimalConverter x:Key="conv" />
</Window.Resources>
<StackPanel>
<ScrollBar Orientation="Horizontal"
Margin="24"
Maximum="100"
LargeChange="10"
SmallChange="1"
Value="{Binding ElementName=Simple, Path=Number, Mode=OneWayToSource}" />
<src:SimpleElement x:Name="Simple" HorizontalAlignment="Center" />
<ScrollBar Name="scroll"
Orientation="Horizontal"
Margin="24"
Maximum="100"
LargeChange="10"
SmallChange="1"
Value="{Binding ElementName=Simple, Path=Number, Mode=OneWay}" Height="17" />
<src:SimpleElement HorizontalAlignment="Center" Number="{Binding ElementName=scroll, Path=Value, Mode=OneWay, Converter={StaticResource conv}, ConverterParameter=2}" Height="50" />
</StackPanel>
</Window>
xaml 코드에서는 위에서와 같이 Resource에서 IValueConverter를 구현하는 클래스를 명시해 주어야 합니다.
그리고 Binding 정의에서는 위에서와 같이 Converter={StaticResource conv}, ConverterParameter=2 를 해주시게 되면 됩니다.
추가적으로 public의 프로퍼티가 있을 경우 값을 추가한 후에 정보 전달도 가능합니다.
<src:DoubleToDecimalConverter Decimals="4" x:Key="conv" />
(Decimals 라는 public 프로퍼티가 선언되어 있다고 가정할때)
위의 코드의 결과는 이전의 강좌에서 소수점으로 쫙 나열되어 있는 정보를 소수 둘째 자리까지 자른후에 표시 할 수 있는 코드 입니다. ^^
그럼.. 오늘 강좌는 여기까지 ^^..
다음 강좌는 MultiBinding를 작성하도록 하겠습니다.