반응형

Image img = new Image();
img.Source = new BitmapImage(new Uri(“pack://application:,,,/Assambly Name;component/Resources/aaa.png”, UriKind.RelativeOrAbsolute));

반응형

'C# 개발 > WPF' 카테고리의 다른 글

WPF에서 UserControl 마우스로 이동 처리 방법  (0) 2021.06.29
Observable Collection에서 Item 찾기  (0) 2019.01.10
C1 DataGrid 필터링 설정  (0) 2019.01.07
반응형

사용자 컨트롤을 마우스 좌측 버튼을 눌러서 이동시키고자 할 경우 유용하게 사용할 수 있는 코드이다.

MemoViewControl 클래스는 내가 만든 사용자 컨트롤이며, 이 컨트롤을 선택해서 마우스로 선택/이동 하는 기능을 수행한다.

MemoViewControl 부분을 각자가 만든 UserControl로 바꾸어서 사용하면 된다.

MemoViewControl에 대한 마우스 Down/Up/Move 이벤트를 아래와 같이 처리해서 사용하면 된다.

        private object movingObject;
        private double firstXPos, firstYPos;

        private void MemoView_PreviewMouseMove(object sender, MouseEventArgs e)
        {
            if (e.LeftButton == MouseButtonState.Pressed && sender == movingObject)
            {
                MemoViewControl memoCtnl = sender as MemoViewControl;
                Canvas canvas = memoCtnl.Parent as Canvas;
                // Horizontal
                double newLeft = e.GetPosition(canvas).X - firstXPos - canvas.Margin.Left;
                // newLeft inside canvas right-border?
                if (newLeft > canvas.Margin.Left + canvas.ActualWidth - memoCtnl.ActualWidth)
                    newLeft = canvas.Margin.Left + canvas.ActualWidth - memoCtnl.ActualWidth;
                // newLeft inside canvas left-border?
                else if (newLeft < canvas.Margin.Left)
                    newLeft = canvas.Margin.Left;

                memoCtnl.SetValue(Canvas.LeftProperty, newLeft);

                //Vertical
                double newTop = e.GetPosition(canvas).Y - firstYPos - canvas.Margin.Top;
                // newTop inside canvas bottom-border?
                // -- Bottom --
                if (newTop > canvas.Margin.Top + canvas.ActualHeight - memoCtnl.ActualHeight)
                    newTop = canvas.Margin.Top + canvas.ActualHeight - memoCtnl.ActualHeight;
                // newTop inside canvas top-border?
                // -- Top --
                else if (newTop < canvas.Margin.Top)
                    newTop = canvas.Margin.Top;

                memoCtnl.SetValue(Canvas.TopProperty, newTop);
            }
        }

        private void MemoView_PreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e)
        {
            selectMemo = (MemoViewControl)sender;
            Canvas canvas = selectMemo.Parent as Canvas;

            movingObject = null;
            
            Mouse.Capture(selectMemo);
        }              

        private void MemoView_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {            
            selectMemo = (MemoViewControl) sender;
            Canvas canvas = selectMemo.Parent as Canvas;

            firstXPos = e.GetPosition(selectMemo).X;
            firstYPos = e.GetPosition(selectMemo).Y;

            movingObject = sender;            
            Mouse.Capture(null);
        }

 

 

반응형

'C# 개발 > WPF' 카테고리의 다른 글

WPF에서 리소스에 등록된 이미지 가져오기  (0) 2021.08.23
Observable Collection에서 Item 찾기  (0) 2019.01.10
C1 DataGrid 필터링 설정  (0) 2019.01.07
반응형

아래와 같이 ObservableCollection이 있다고 할때, 특정 Item만 찾아서 처리를 해야 할 경우

 

public struct PLU {
        
public int ID { get; set; }
        
public string name { get; set; }
        
public double price { get; set; }
        
public int quantity {get;set;}

}
public static ObservableCollection<PLU> PLUList = new ObservableCollection<PLU>();

 

PLU item = PLUList.Where(z => z.ID == 12).FirstOrDefault();

if (item != null)

{

//item이 있을 경우

}

else

{

//item이 존재하지 않을 경우

}

반응형
반응형

C1Component의 DataGrid에서 필터를 적용하고자 할 경우 아래와 같이 적용하면 된다.

 

//필터 삭제(초기화)
FilterExample.FilterBy(new DataGridColumnValue<DataGridFilterState>[0]);

 

//첫 번째 필터링

 

string exam1 = cboExam1.SelectedValue.ToString();

List<DataGridFilterInfo> filterInfoList1 = new List<DataGridFilterInfo>();
DataGridFilterState filterState1 = new DataGridFilterState();
filterInfoList1.Add(new DataGridFilterInfo() { FilterOperation = DataGridFilterOperation.Equal, FilterType = DataGridFilterType.Text, Value = exam1 });
filterState1.FilterInfo = filterInfoList1;

 

string exam2 = cboExam2.SelectedValue.ToString();

//두 번째 필터링 (AND)

List<DataGridFilterInfo> filterInfoList2 = new List<DataGridFilterInfo>();
DataGridFilterState filterState2 = new DataGridFilterState();
filterInfoList2.Add(new DataGridFilterInfo() { FilterOperation = DataGridFilterOperation.Equal, FilterCombination = DataGridFilterCombination.And,

                                                          FilterType = DataGridFilterType.Text, Value = exam2 });
filterState2.FilterInfo = filterInfoList2;

 

//2개의 필터를 KeyValuePair로 생성

KeyValuePair<C1.WPF.DataGrid.DataGridColumn, DataGridFilterState>[] filters =

                    new KeyValuePair<C1.WPF.DataGrid.DataGridColumn, DataGridFilterState>[2];

filters[0] = new KeyValuePair<C1.WPF.DataGrid.DataGridColumn, DataGridFilterState>(FilterExample.Columns["EXAM_01"], filterState1);
filters[1] = new KeyValuePair<C1.WPF.DataGrid.DataGridColumn, DataGridFilterState>(FilterExample.Columns["EXAM_02"], filterState2);

 

//필터 적용

FilterExample.FilterBy(filters);

반응형

+ Recent posts