C# 4

Datagrid 내에 ItemsSource 외부의 값을 바인딩해야할 때

WPF에서 MVVM 패턴 사용시 데이터그리드 내 Column에 값을 Binding할때 보통 어떻게 하시나요? 보통 이런 식으로 데이터 그리드의 각 Column마다 바인딩을 해준 후 ViewModel 쪽에 클래스를 생성해주는 게 일반적일텐데요 public class ItemSet : BindableBase { private int id = 0; public int ID { get => id; set => SetProperty(ref id, value); } private string name = ""; public string Name { get => name; set => SetProperty(ref name, value); } private string part = ""; public string Pa..

C#/WPF 2022.05.02

StaticResourceHolder 값 제공 예외 throw

분명히 똑같이 짠 다른 코드는 잘 돌았는데 갑자기 리소스를 찾을 수 없다고 나오는 나쁜 예외.... 이유가 뭘지 며칠동안 고민했는데 정말 별거 아닌 이유였네요 해당 코드에서 발생한 예외였는데요 간단하게 설명하자면 특정 Grid 스타일 내에서만 사용하고 싶은 DataGrid 스타일이 있어서 작성한 코드입니다 위 코드처럼 작성하시면 GeneralGrid 스타일을 적용한 Grid 내의 Datagrid의 스타일은 모두 CommonDataGrid 스타일이 적용됩니다. Style.Resources를 사용하시면 특정 스타일 내에서 다른 컨트롤들의 UI도 쉽게 설정하실 수 있습니다. 버젓이 존재하고 있는 'CommonDataGrid' 스타일이 자꾸 찾을 수 없다고 나와서 정말정말 이해가 안 됐습니다 도대체 ... 왜 ..

C#/WPF 2022.02.14

Array Binding 시 Property Changed 이벤트

WPF에서 Array를 xaml 쪽에 바인딩시 바인딩된 값이 바로 변경되지 않는 문제가 발생합니다. C#에서는 이를 위해서 ObservableCollection이라는 자료형이 존재합니다. 기본적으로 ObservableCollection 내에는 PropertyChanged 이벤트를 가지고 있기 때문에 Property가 변경될 시에 바로 xaml 쪽으로 변경된 값을 보내주게 됩니다. 따라서 별다른 처리 없이 값을 바로 변경시키고 싶을 때에는 ObservableCollection 을 사용하는 것이 용이합니다. 하지만 Array를 써야 편할 때가 있습니다. 자료형이나 크기를 초기에 지정해줘야 편할 때가 그런 경우인데 저같은 경우에는 10개의 Visibility로 이루어진 배열을 만들어보았습니다. private ..

C#/WPF 2022.02.08

WPF Binding된 이미지 파일 접근 시 사용중 Exception

System.IO.IOException의 한 종류로 xaml쪽에 바인딩된 이미지에 접근하려고 하면 나오는 Exception입니다. '------' 파일은 다른 프로세스에서 사용 중이므로 프로세스에서 액세스할 수 없습니다 위 문구가 뜨면서 오류가 납니다. 저는 이미지 파일 정보를 저장하려다 해당 오류가 발생하였습니다 ㅠㅜ 해결 방법은 새로운 비트맵 이미지를 만들어주는 것입니다 var bitmapImage = new BitmapImage(); bitmapImage.BeginInit(); bitmapImage.StreamSource = new FileStream(info.ImagePath, FileMode.Open, FileAccess.ReadWrite); bitmapImage.CacheOption = Bit..

C#/WPF 2022.02.07