2020. 2. 17. 11:17ㆍWPF/코드
DataGrid
*.xmal ___ Source Code
<DataGrid x:Name="DataGrid_Channel_Control_Bytes" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=Name}"/>
<DataGridTemplateColumn Header="Lane1">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox1" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Lane2">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox2" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Lane3">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox3" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Lane4">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox4" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Lane5">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox5" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Lane6">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox6" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Lane7">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox7" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Lane8">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkBox8" VerticalAlignment="Center" HorizontalAlignment="Center" Click="DataGrid_Channel_Control_Bytes_Click"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
WPF ___ Source Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Media;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Windows.Controls;
using System.Windows;
using System.Data;
namespace qsfp_gui
{
class ChannelControlBytes
{
private const byte C_MAX_LANE = 8 ;
public bool[,] CheckBoxIsChecked
{
get { return __CheckBoxIsChecked; }
set { __CheckBoxIsChecked = value; }
}
private bool[,] __CheckBoxIsChecked;
public string[] strColumn_0_Name = new string[] {
"TX DIS",
"TX SQUELCH DIS",
"RX SQUELCH DIS",
"RX DIS",
"RX RS MSB",
"RX RS LSB",
"TX RX MSB",
"TX RX LSB",
"TX CDR Control",
"RX CDR Control"
};
public ChannelControlBytes()
{
__CheckBoxIsChecked = new bool[strColumn_0_Name.Length, C_MAX_LANE];
}
private ObservableCollection<UserData> __userInfo = new ObservableCollection<UserData>();
public void DataGrid___Init(DataGrid dg)
{
foreach (string rBuf in strColumn_0_Name)
{
__userInfo.Add(new UserData() { Name = rBuf });
}
dg.ItemsSource = __userInfo;
}
private void DataGrid_Channel_Control_Bytes_Click(object sender, RoutedEventArgs e)
{
string iName = null;
int numColumn = 0, numRow = 0;
for (Visual vis = sender as Visual; vis != null; vis = VisualTreeHelper.GetParent(vis) as Visual)
{
if (vis is DataGridRow)
{
/** Colunm[0] = Text */
iName = ((UserData)((DataGridRow)vis).Item).Name;
/** CheckBox x:Name */
string strCheckBoxName = ((CheckBox)sender).Name;
numColumn = Convert.ToByte(strCheckBoxName.Substring(strCheckBoxName.Length-1, 1));
break;
}
}
numColumn = numColumn - 1;
for ( int i = 0; i < CCB.strColumn_0_Name.Length; i++)
{
if (iName == CCB.strColumn_0_Name[i])
{
numRow = i;
break;
}
}
if (((CheckBox)sender).IsChecked == true)
{
CCB.CheckBoxIsChecked[numRow, numColumn] = true;
}
else
{
CCB.CheckBoxIsChecked[numRow, numColumn] = false;
}
}
}
public class UserData : INotifyPropertyChanged
{
private string __Name;
public string Name
{
get { return __Name; }
set
{
__Name = value;
OnPropertyChanged("Name");
}
}
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
}
실행
'WPF > 코드' 카테고리의 다른 글
WPF___TextBoxCopyPaste 처리 (0) | 2021.01.19 |
---|---|
WPF___TextBox DragDrop 처리 (0) | 2021.01.19 |
WPF___DataGrid (0) | 2020.02.17 |
WPF___닫힌 윈도우폼 열면 에러? (0) | 2020.02.17 |
WPF___백그라운드 프로세서 종료 (0) | 2020.02.17 |