Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
Better Coding Better Coding
  • Project overview
    • Project overview
    • Details
    • Activity
  • Issues 6
    • Issues 6
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Metrics
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Package Registry
  • Analytics
    • Analytics
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • 박한성
  • Better CodingBetter Coding
  • Issues
  • #1

Closed
Open
Created Jul 09, 2021 by 박한성@hsparkMaintainer

WPF

WPF Control

Data Grid

<DataGrid ItemsSource="{Binding ListSceCommand}" Margin="3" BorderThickness="1" CanUserSortColumns="False"
 AutoGenerateColumns="False" SelectionMode="Single" SelectedItem="{Binding SelectedCommand}" HorizontalScrollBarVisibility="Auto"
 IsReadOnly="True" ColumnWidth="Auto" Grid.RowSpan="1" Grid.ColumnSpan="3">
  • CanUserSortColumns : column 클릭 시 정렬 기능 on/off
  • AutoGenerateColumns : ItemSource의 내용 자동 추가?
  • BorderThickness : 테두리
  • ColumnWidth : 크기 Auto
  • IsReadOnly : 읽기 전용
  • HorizontalScrollBarVisibility : 스크롤바 Auto

ScrollViewer

<ScrollViewer HorizontalScrollBarVisibility="Auto">
  <StackPanel Orientation="Horizontal">
  • StackPanel에 scroll 추가 필요 시 사용 가능

StackPanel

<StackPanel  Orientation="Horizontal">
  • Orientation : 수직/수평 정렬

WindowsFormsHost

  • .Net Framework 라이브러리 프로젝트인 경우
    • WindowsFormsIntegration, System.Windows.Forms 참조 추가 시 사용 가능
    • Form Host 시 ControlBox False 및 Text "" 값으로 세팅하면 컨트롤박스 안보이게 가능
code behind xaml
image image
// ControlBox=fase, Text="" 사용하지 않고도 컨트롤박스 안보이게 가능.
editor.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 

바인딩

Data Grid

  • CurrentPos을 주기적으로 GUI에 업데이트해야 할 경우
    • Get으로 위치만 읽어오는 경우에는 프로퍼티 변경에 대한 이벤트가 발생하지 않음.
    • 바인딩용 프로퍼티를 생성하여 Timer에 Get으로 읽어온 값을 넣어준다.
      • 바인딩용 프로퍼티 생성 시 반드시 Set부분에 OnpropertyChange()를 추가해야함. (INotifyPropertyChanged 사용)
        public double CurrentPos => motor.GetCurrentPos(info);

        private double tempPos = 0;
        public double UpdateCurrentPos
        {
            get => tempPos;       
            set
            {
                tempPos = value;
                OnPropertyChanged("UpdateCurrentPos");
            }
        }

Convert 활용

  • Background(Brush)에 bool값을 바인딩하여 true/false에 따라 Color가 바뀌는 UserControl 생성 시 Convert 활용
    • 아래 StatusView의 ConvertColor는 DependencyProperty Brush
    • Background값에 바로 Brush를 바인딩 할 경우, IPCom같은 Connect 이벤트에 IsConnect 변수가 ture로 변경 시 Brush의 Color값이 바뀌도록 구성했을때 DependencyObject 관련 에러 발생함. Convert로 처리 시 해결 가능.
    <UserControl.Resources>
        <viewmodel:BoolToColorConverter x:Key="boolConvert"/>
    </UserControl.Resources>
    <local:StatusView ConnectColor="{Binding IsConnect, Converter={StaticResource boolConvert}}" Margin="0,0,10,0"/>

MouseBinding

<Grid.InputBindings>
  <MouseBinding Gesture="RightClick" Command="{Binding CommandRightClick}" CommandParameter="{Binding ElementName=CameraView}"/>
</Grid.InputBindings>
<Image x:Name="CameraView" Source="{Binding GrabImage}" Stretch="None"/>
Edited May 20, 2022 by 박한성
Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking