훈스닷넷에 답글달고 정리 차원에서 남겨둔다. C#에서는 C에서 처럼 포인터를 사용할수가 있다. 빌드옵션에서 안전하지 않은 코드 check 해주고 다음과 같은 방법으로 한다. static void Main(string[] args) { foo(); } unsafe static void foo() { Int64 aa = 123456789; Int64 bb = 123222; IntPtr pt = new IntPtr(&aa); IntPtr pt2 = new IntPtr(&bb); Console.WriteLine(pt.ToString("x")); Console.WriteLine(pt2.ToString("x")); Int32 a = 1234231; Int32 b = 154324; IntPtr pt3 = new IntPtr(&a); IntPtr pt4 = new IntPtr(&b); Console.WriteLine(pt3.ToString("x")); Console.WriteLine(pt4.ToString("x")); } 확인해보면 Int64는 8바이트, Int32는 4바이트 만큼 주소가 증가했음을 알 수 있다.
MVVM 패턴을 이용해서 View의 TextBox 등에 바인딩은 간단하게 <TextBox Text="{Binding mystring}"/> 이렇게 하면 된다. RichTextBox 도 마찬가지 일것 같지만, 해보면 안된다. 먼저 RichTextBox가 Content를 표현하는 구조를 알아야 되는데, 그건, 다음에 정리하고, 바인딩 하는 방법은 아래와 같다. 먼저 ViewModel 을 DependencyObject 를 상속고 DependencyProperty 를 정의해준다. public class MyViewModel : DependencyObject { public FlowDocument Document { get { return (FlowDocument)GetValue(DocumentProperty); } set { SetValue(DocumentProperty, value); } } public static readonly DependencyProperty DocumentProperty = DependencyProperty.Register("Document", typeof(FlowDocument), typeof(MyViewModel), new PropertyMetadata(OnDocumentChanged)); public void OnDocumentChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { } } 그 다음 View 의 code-behind 의 생성자에 InitializeComponent(); Binding b = new Binding("Document"); b.Source = richTextBox; b.Mode = BindingMode.OneWay; BindingOperations.SetB
상식적으로 WrapPanel에 Orientation을 수평으로 하고 객체를 추가하면 차례대로 wrap되면서 객체가 추가되어야 한다. Grid는 Row나 Column 을 define 해놓지 않으면 Grid크기로 strech되기 때문에 RowDefinition등을 사용해서 matrix를 만든다. 그럼... WrapPanel에 템플릿을 사용해 버튼을 그리면? 당연히 차례대로 들어갈거라 생각했는데 첫번째줄, 두번째줄.... 하나씩 들어간다. 이건뭐... StackPanel 도 아니고.. 아직 WPF에 대한 이해가 부족한 것 같다.(책을 읽다가 말아서 이 고생을 하는것 같다.) MSDN을 보면 ItemsPanel을 사용해서 내가 구현하고자 하는걸 비슷하게 해놓았더라. 덕분에 ItemsPanel이란 검색어를 획득(?)해서 구글링 해보았더니 딱 원하는게 나왔다. <ItemsControl ItemsSource = "{Binding Path=PositionList}" > <ItemsControl.ItemsPanel> <ItemsPanelTemplate> <UniformGrid Rows = "12" Columns = "4" /> </ItemsPanelTemplate> </ItemsControl.ItemsPanel> <ItemsControl.ItemTemplate> <DataTemplate > <TextBlock Text = "{Binding State}" /> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl> public class Posi
댓글
댓글 쓰기