WPF로 개발을 하다 보면 종종 Blend나 VS의 디자이너에서 화면을 불러올 수 없다고 오류가 뜨는 경우가 있다. 아마도 디자이너가 화면을 렌더링 할 때 코드를 일부 컴파일 하는 것으로 보인다. 특히, dll (어셈블리) 또는 여기에 종속되어 있는 파일이나 어셈블리가 있을 경우 빈번히 일어난다. 이럴 경우 생성자 부분에 아래와 같이 디자인 타임인지 아닌지를 구분하도록 한다. public MainView() { InitializeComponent(); // [1/15/2015 ksh] 디자인 타임에서 dll 로딩시 문제 발생함. 아래 코드는 디자인타임시에는 dll 로딩안하고 리턴하도록 수정. if (System.ComponentModel.DesignerProperties.GetIsInDesignMode(..
WPF 에서 Navigate 구조를 이용할 경우 Backspace 키를 누르면 이전으로 돌아간다.이것을 방지하기 위해서는 아래와 같이 한다. 1. 윈도우 자체가 NavigationWindow를 상속받은 경우 public partial class Window1 : NavigationWindow { public Window1() { InitializeComponent(); this.NavigationService.Navigated += new NavigatedEventHandler(NavigationService_Navigated); } private void NavigationService_Navigated(object sender, NavigationEventArgs e) { this.Navigation..
ListBox에 Context 메뉴를 호출하는 방법은 아래와 같이 간단히 할 수 있다. ... 이렇게 하면 아이템이 선택되지 않았을 경우도 ContextMenu가 나타난다. ListBox의 Item이 선택된 후에 Context 메뉴를 나타나게 하기 위해서는 ListBox의 DataTemplate 안에 StackPanel을 위치시키고, StackPanel의 ContextMenu를 호출한다. --------------- ------------------- 이렇게 하면 Item이 선택되었을 때에만 메뉴가 나타난다..
아래처럼 xml에서 Image를 바인딩을 통해 로딩할 때, ImagePath가 null 또는 "" 일경우 system.windows.data error: 23 Cannot convert '' from type '' to type ... 와 같은 에러가 난다. 이럴 경우 바인딩된 변수를 아래와 같이 해결하면 에러가 나지 않는다. private string _imagePath = string.Empty; public object ImagePath { get { if (string.IsNullOrEmpty(_imagePath)) return DependencyProperty.UnsetValue; return _imagePath; } set { if (!(value is string)) return; _imag..