{"id":37781,"date":"2024-11-01T10:00:23","date_gmt":"2024-11-01T10:00:23","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=37781"},"modified":"2024-11-01T11:03:45","modified_gmt":"2024-11-01T11:03:45","slug":"wpf-course-displaying-list-data-through-data-binding","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/37781\/","title":{"rendered":"WPF Course, Displaying List Data Through Data Binding"},"content":{"rendered":"<p>Windows Presentation Foundation (WPF) is a framework created by Microsoft for developing desktop applications. One of the main features of WPF is Data Binding. Data binding allows for an efficient connection between UI elements and data, enabling developers to clearly separate the business logic of an application from the UI. In this course, we will take a closer look at how to display list data using data binding in WPF.<\/p>\n<h2>1. Basic Concept of Data Binding<\/h2>\n<p>Data binding refers to the connection between UI elements (e.g., text boxes, list boxes, etc.) and data sources. This ensures that when data changes, the UI is automatically updated, and conversely, the data that the user inputs in the UI is synchronized with the data source. WPF provides various features to facilitate easy binding.<\/p>\n<p>Using data binding provides the following benefits:<\/p>\n<ul>\n<li>Code simplicity: UI elements and data sources can be connected intuitively, making the code simpler.<\/li>\n<li>Separation of concerns: Business logic and UI can be clearly distinguished, allowing for independent development and testing.<\/li>\n<li>Automatic updates: The UI is automatically updated when data changes, enhancing the user experience.<\/li>\n<\/ul>\n<h2>2. Preparing Data Source<\/h2>\n<p>Now, let&#8217;s prepare a data source for displaying list data in a WPF application. For example, we will define a simple list that includes student information.<\/p>\n<pre><code class=\"language-csharp\">\npublic class Student\n{\n    public string Name { get; set; }\n    public int Age { get; set; }\n    public string Major { get; set; }\n}\n\npublic class StudentViewModel\n{\n    public ObservableCollection&lt;Student&gt; Students { get; set; }\n\n    public StudentViewModel()\n    {\n        Students = new ObservableCollection&lt;Student&gt;\n        {\n            new Student { Name = \"John Doe\", Age = 20, Major = \"Computer Science\" },\n            new Student { Name = \"Jane Smith\", Age = 22, Major = \"Mathematics\" },\n            new Student { Name = \"Sam Brown\", Age = 21, Major = \"Physics\" }\n        };\n    }\n}\n<\/code><\/pre>\n<p>In the code above, we have defined a <code>Student<\/code> class to represent student information and created an <code>ObservableCollection<\/code> to hold it. <code>ObservableCollection<\/code> is a collection that automatically sends notifications to the UI when data changes.<\/p>\n<h2>3. Setting Up Data Binding in XAML<\/h2>\n<p>Now it\u2019s time to set up data binding in the XAML file. We will set the StudentViewModel as the data context and bind the list data to the UI elements.<\/p>\n<pre><code class=\"language-xaml\">\n<window height=\"350\" title=\"Student List\" width=\"525\" x:class=\"WpfApp.MainWindow\" xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\" xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\">\n    <window.datacontext>\n        <local:studentviewmodel><\/local:studentviewmodel>\n    <\/window.datacontext>\n    <grid>\n        <listbox itemssource=\"{Binding Students}\">\n            <listbox.itemtemplate>\n                <datatemplate>\n                    <stackpanel>\n                        <textblock fontweight=\"Bold\" text=\"{Binding Name}\"><\/textblock>\n                        <textblock text=\"{Binding Age}\"><\/textblock>\n                        <textblock text=\"{Binding Major}\"><\/textblock>\n                    <\/stackpanel>\n                <\/datatemplate>\n            <\/listbox.itemtemplate>\n        <\/listbox>\n    <\/grid>\n<\/window>\n<\/code><\/pre>\n<p>The important parts of the above XAML code are the <code>ItemsSource<\/code> property and the <code>DataTemplate<\/code>. The <code>ItemsSource<\/code> property specifies the data source to be displayed in the list box, and the <code>DataTemplate<\/code> defines how each individual item is displayed.<\/p>\n<h2>4. Interaction Between UI and Data<\/h2>\n<p>Data binding allows for smooth interaction between the UI and the data. For example, we could add functionality to show detailed information about a student when the user selects them from the list box.<\/p>\n<pre><code class=\"language-xaml\">\n<stackpanel orientation=\"Vertical\">\n    <listbox itemssource=\"{Binding Students}\" selecteditem=\"{Binding SelectedStudent}\"><\/listbox>\n    <textblock fontweight=\"Bold\" text=\"{Binding SelectedStudent.Name}\"><\/textblock>\n    <textblock text=\"{Binding SelectedStudent.Age}\"><\/textblock>\n    <textblock text=\"{Binding SelectedStudent.Major}\"><\/textblock>\n<\/stackpanel>\n<\/code><\/pre>\n<p>In the above code, we used the <code>SelectedItem<\/code> property to bind the currently selected student&#8217;s information to the <code>SelectedStudent<\/code> property. This information is automatically updated when displayed in the <code>TextBlock<\/code>.<\/p>\n<h2>5. MVVM Pattern and Data Binding<\/h2>\n<p>In WPF, it is common to use data binding in conjunction with the MVVM (Model-View-ViewModel) pattern. The MVVM pattern helps clarify the structure of the application, improving maintainability.<\/p>\n<p>Applying this pattern results in the following structure:<\/p>\n<ol>\n<li><strong>Model:<\/strong> Contains the application&#8217;s data and business logic.<\/li>\n<li><strong>View:<\/strong> Defines UI elements and handles user interactions.<\/li>\n<li><strong>ViewModel:<\/strong> Connects the Model and View and manages the interaction between UI and data through data binding.<\/li>\n<\/ol>\n<h2>6. ObservableCollection and INotifyPropertyChanged<\/h2>\n<p>To notify the UI when data changes in WPF, the <code>INotifyPropertyChanged<\/code> interface must be implemented. This interface raises events when property values change, notifying the UI of these changes.<\/p>\n<pre><code class=\"language-csharp\">\npublic class Student : INotifyPropertyChanged\n{\n    private string name;\n    public string Name\n    {\n        get { return name; }\n        set\n        {\n            if (name != value)\n            {\n                name = value;\n                OnPropertyChanged(nameof(Name));\n            }\n        }\n    }\n\n    \/\/ Implement similarly for Age and Major...\n    \n    public event PropertyChangedEventHandler PropertyChanged;\n\n    protected virtual void OnPropertyChanged(string propertyName)\n    {\n        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));\n    }\n}\n<\/code><\/pre>\n<p>By implementing <code>INotifyPropertyChanged<\/code> in the <code>Student<\/code> class, changes to the name will be automatically reflected in the UI.<\/p>\n<h2>7. Practical Example: Displaying Data in a List View<\/h2>\n<p>Based on what we have learned so far, let&#8217;s conduct a practical exercise to implement data binding using a list view. In this example, we will display student information in a table format.<\/p>\n<pre><code class=\"language-xaml\">\n<window height=\"350\" title=\"Student List\" width=\"525\" x:class=\"WpfApp.MainWindow\" xmlns=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\/presentation\" xmlns:x=\"http:\/\/schemas.microsoft.com\/winfx\/2006\/xaml\">\n    <window.datacontext>\n        <local:studentviewmodel><\/local:studentviewmodel>\n    <\/window.datacontext>\n    <grid>\n        <datagrid autogeneratecolumns=\"False\" itemssource=\"{Binding Students}\">\n            <datagrid.columns>\n                <datagridtextcolumn binding=\"{Binding Name}\" header=\"Name\"><\/datagridtextcolumn>\n                <datagridtextcolumn binding=\"{Binding Age}\" header=\"Age\"><\/datagridtextcolumn>\n                <datagridtextcolumn binding=\"{Binding Major}\" header=\"Major\"><\/datagridtextcolumn>\n            <\/datagrid.columns>\n        <\/datagrid>\n    <\/grid>\n<\/window>\n<\/code><\/pre>\n<p>In the code above, we used a <code>DataGrid<\/code> to list student information in a table format. The <code>Binding<\/code> properties of each <code>DataGridTextColumn<\/code> connect the UI elements to the data sources.<\/p>\n<h2>8. Adding and Removing Data<\/h2>\n<p>Now, let&#8217;s also implement functionality for adding and removing student information. We will add methods to the <code>StudentViewModel<\/code> class to update student data.<\/p>\n<pre><code class=\"language-csharp\">\npublic class StudentViewModel : INotifyPropertyChanged\n{\n    public ObservableCollection&lt;Student&gt; Students { get; set; }\n    public ICommand AddStudentCommand { get; set; }\n    public ICommand RemoveStudentCommand { get; set; }\n\n    public StudentViewModel()\n    {\n        Students = new ObservableCollection&lt;Student&gt;();\n        AddStudentCommand = new RelayCommand(AddStudent);\n        RemoveStudentCommand = new RelayCommand(RemoveStudent);\n    }\n\n    private void AddStudent()\n    {\n        Students.Add(new Student { Name = \"New Student\", Age = 18, Major = \"Undeclared\" });\n    }\n\n    private void RemoveStudent()\n    {\n        if (SelectedStudent != null)\n            Students.Remove(SelectedStudent);\n    }\n}\n<\/code><\/pre>\n<p>In the above code, <code>RelayCommand<\/code> implements the ICommand interface to handle commands. We defined the <code>AddStudent<\/code> method to add students and the <code>RemoveStudent<\/code> method to delete the selected student.<\/p>\n<h2>9. Adding Add and Remove Buttons to the UI<\/h2>\n<p>Let&#8217;s add buttons to the UI that allow for adding and removing student information.<\/p>\n<pre><code class=\"language-xaml\">\n<stackpanel>\n    <button command=\"{Binding AddStudentCommand}\" content=\"Add Student\"><\/button>\n    <button command=\"{Binding RemoveStudentCommand}\" content=\"Remove Student\"><\/button>\n    <datagrid autogeneratecolumns=\"False\" itemssource=\"{Binding Students}\">\n        <datagrid.columns>\n            <datagridtextcolumn binding=\"{Binding Name}\" header=\"Name\"><\/datagridtextcolumn>\n            <datagridtextcolumn binding=\"{Binding Age}\" header=\"Age\"><\/datagridtextcolumn>\n            <datagridtextcolumn binding=\"{Binding Major}\" header=\"Major\"><\/datagridtextcolumn>\n        <\/datagrid.columns>\n    <\/datagrid>\n<\/stackpanel>\n<\/code><\/pre>\n<p>With this setup, users can click the &#8220;Add Student&#8221; button to add a new student, and click the &#8220;Remove Student&#8221; button to delete the selected student.<\/p>\n<h2>10. Conclusion<\/h2>\n<p>In this tutorial, we learned how to use data binding in WPF to display list data. We explored how to enhance the readability and maintainability of applications through a smooth connection between objects and UI elements.<\/p>\n<p>Data binding is a powerful and useful feature in WPF, and when used in conjunction with the MVVM pattern, it becomes even more effective. These techniques can help in developing applications that provide a better user experience.<\/p>\n<p>Finally, I hope that with this understanding of data binding, you can develop more advanced WPF applications. Thank you!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Windows Presentation Foundation (WPF) is a framework created by Microsoft for developing desktop applications. One of the main features of WPF is Data Binding. Data binding allows for an efficient connection between UI elements and data, enabling developers to clearly separate the business logic of an application from the UI. In this course, we will &hellip; <a href=\"https:\/\/atmokpo.com\/w\/37781\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;WPF Course, Displaying List Data Through Data Binding&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[117],"tags":[],"class_list":["post-37781","post","type-post","status-publish","format-standard","hentry","category-wpf-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>WPF Course, Displaying List Data Through Data Binding - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/37781\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"WPF Course, Displaying List Data Through Data Binding - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"Windows Presentation Foundation (WPF) is a framework created by Microsoft for developing desktop applications. One of the main features of WPF is Data Binding. Data binding allows for an efficient connection between UI elements and data, enabling developers to clearly separate the business logic of an application from the UI. In this course, we will &hellip; \ub354 \ubcf4\uae30 &quot;WPF Course, Displaying List Data Through Data Binding&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/37781\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T10:00:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:03:45+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/37781\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37781\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"WPF Course, Displaying List Data Through Data Binding\",\"datePublished\":\"2024-11-01T10:00:23+00:00\",\"dateModified\":\"2024-11-01T11:03:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37781\/\"},\"wordCount\":778,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"WPF Programming\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/37781\/\",\"url\":\"https:\/\/atmokpo.com\/w\/37781\/\",\"name\":\"WPF Course, Displaying List Data Through Data Binding - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T10:00:23+00:00\",\"dateModified\":\"2024-11-01T11:03:45+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/37781\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/37781\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/37781\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"WPF Course, Displaying List Data Through Data Binding\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"WPF Course, Displaying List Data Through Data Binding - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/atmokpo.com\/w\/37781\/","og_locale":"ko_KR","og_type":"article","og_title":"WPF Course, Displaying List Data Through Data Binding - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"Windows Presentation Foundation (WPF) is a framework created by Microsoft for developing desktop applications. One of the main features of WPF is Data Binding. Data binding allows for an efficient connection between UI elements and data, enabling developers to clearly separate the business logic of an application from the UI. In this course, we will &hellip; \ub354 \ubcf4\uae30 \"WPF Course, Displaying List Data Through Data Binding\"","og_url":"https:\/\/atmokpo.com\/w\/37781\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T10:00:23+00:00","article_modified_time":"2024-11-01T11:03:45+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/37781\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/37781\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"WPF Course, Displaying List Data Through Data Binding","datePublished":"2024-11-01T10:00:23+00:00","dateModified":"2024-11-01T11:03:45+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/37781\/"},"wordCount":778,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["WPF Programming"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/37781\/","url":"https:\/\/atmokpo.com\/w\/37781\/","name":"WPF Course, Displaying List Data Through Data Binding - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T10:00:23+00:00","dateModified":"2024-11-01T11:03:45+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/37781\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/37781\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/37781\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"WPF Course, Displaying List Data Through Data Binding"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37781","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=37781"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37781\/revisions"}],"predecessor-version":[{"id":37782,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/37781\/revisions\/37782"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=37781"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=37781"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=37781"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}