[WPF] Ribbon control
WPF Ribbon 다운 로드
- https://www.microsoft.com/en-us/download/details.aspx?id=11877
설치 경로
- On x86 computers, %ProgramFiles%\Microsoft Ribbon for WPF\
- On AMD64 computers, %ProgramFiles(x86)%\Microsoft Ribbon for WPF\
설치 경로의 DLL 파일을 찾아서 프로젝트에 참조 추가 합니다.
MSDN Documentation
- https://docs.microsoft.com/ko-kr/previous-versions/ff799534(v=vs.110)
- https://docs.microsoft.com/ko-kr/windows/desktop/windowsribbon/windowsribbon-stepbystep
간단한 샘플 코드
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:Custom="http://schemas.microsoft.com/winfx/2006/xaml/presentation/ribbon" x:Class="RB.MainWindow"
Title="MainWindow" Width="500" Height="700">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="100" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Custom:Ribbon HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Grid.Row="0">
<Custom:RibbonTab Header="Tab111">
<Custom:RibbonGroup Header="Gr1">
<Button Name="btnOpenFile" Click="btnOpenFile_Click">Open text</Button>
</Custom:RibbonGroup>
<Custom:RibbonGroup Header="Gr2">
<Button Name="btnSaveFile" Click="btnSaveFile_Click">Save text</Button>
</Custom:RibbonGroup>
<Custom:RibbonGroup Header="Gr3">
<Button Name="btnGridData" Click="btnGridData_Click">Grid data</Button>
</Custom:RibbonGroup>
<Custom:RibbonGroup Header="Gr4">
<Button Name="btnSaveGridData" Click="btnSaveGridData_Click">Save grid</Button>
</Custom:RibbonGroup>
</Custom:RibbonTab>
<Custom:RibbonTab Header="Tab222">
<Custom:RibbonGroup Header="Gr1">
<Custom:RibbonButton Label="btn11111" />
</Custom:RibbonGroup>
</Custom:RibbonTab>
</Custom:Ribbon>
<TextBox Name="txtEditor" Grid.Row="1" ScrollViewer.VerticalScrollBarVisibility="Auto" />
<DataGrid Name="dgSimple" Grid.Row="2" />
</Grid>
</Window>
-------------------------------
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnOpenFile_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "Text files (*.txt)|*.txt|All files (*.*)|*.*";
if (openFileDialog.ShowDialog() == true)
{
txtEditor.Text = File.ReadAllText(openFileDialog.FileName);
}
}
private void btnSaveFile_Click(object sender, RoutedEventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "Text file (*.txt)|*.txt|C# file (*.cs)|*.cs";
if (saveFileDialog.ShowDialog() == true)
{
File.WriteAllText(saveFileDialog.FileName, txtEditor.Text);
}
}
private void btnGridData_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "CSV files (*.csv)|*.csv";
if (openFileDialog.ShowDialog() == true)
{
StreamReader lObjStreamReader = new StreamReader(openFileDialog.FileName);
GetCSVData(lObjStreamReader);
lObjStreamReader.Close();
}
}
private void GetCSVData(StreamReader aReader)
{
try
{
DataTable dt = new DataTable();
while (aReader.Peek() > 0)
{
string lStrLine = aReader.ReadLine();
if (lStrLine == null)
break;
if (lStrLine.Trim() == "")
continue;
string[] lArrStrCells = lStrLine.Split(',');
if (dt.Columns.Count < lArrStrCells.Length)
{
for (int i = dt.Columns.Count; i < lArrStrCells.Length; i++)
{
dt.Columns.Add(lArrStrCells[i]);
}
}
DataRow dr = dt.NewRow();
for (int i = 0; i < lArrStrCells.Length; i++)
{
dr[i] = lArrStrCells[i];
}
dt.Rows.Add(dr);
}
aReader.Close();
dgSimple.ItemsSource = dt.DefaultView;
}
catch (Exception)
{
}
}
private void btnSaveGridData_Click(object sender, RoutedEventArgs e)
{
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.Filter = "CSV file (*.csv)|*.csv";
if (saveFileDialog.ShowDialog() == true)
{
dgSimple.SelectAllCells();
dgSimple.ClipboardCopyMode = DataGridClipboardCopyMode.IncludeHeader;
ApplicationCommands.Copy.Execute(null, dgSimple);
dgSimple.UnselectAllCells();
String result = (string)Clipboard.GetData(DataFormats.CommaSeparatedValue);
File.AppendAllText(saveFileDialog.FileName, result, UnicodeEncoding.UTF8);
}
}
}
Free .NET Spreadsheet Control
- unvell.ReoGridWPF.dll
'프로그래밍' 카테고리의 다른 글
Copy Table Schema and Data From One Database to Another Database in SQL Server (0) | 2019.03.11 |
---|---|
로또 번호 모든 경우의 수 DB에 입력하기 (0) | 2019.02.09 |
C# 단축키 (0) | 2019.02.08 |
Color chart (0) | 2019.02.08 |
Chart Control (0) | 2019.02.08 |