[WPF] Ribbon control

Posted by lossen
2019. 2. 11. 13:13 프로그래밍

 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