<?xml version="1.0" encoding="utf-8"?><!-- generator="b2evolution/6.7.7-stable" -->
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>My .Net Blog</title>
		<link>https://www.itblogs.info/index.php?blog=3</link>
		<atom:link rel="self" type="application/rss+xml" href="https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2" />
		<description>.Net Blog</description>
		<language>en-EU</language>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<admin:generatorAgent rdf:resource="http://b2evolution.net/?v=6.7.7-stable"/>
		<ttl>60</ttl>
				<item>
			<title>Exploring Ralph Driven Development</title>
			<link>https://www.itblogs.info/index.php/exploring-ralph-driven-development?blog=3</link>
			<pubDate>Sat, 07 Feb 2026 00:56:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Example Codes</category>			<guid isPermaLink="false">1132@https://www.itblogs.info/</guid>
						<description>&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://www.itblogs.info/media/blogs/b/quick-uploads/p1132/screenshot_2026-02-07_105613.png?mtime=1770425786&quot; rel=&quot;lightbox[p1132]&quot; id=&quot;link_162&quot;&gt;&lt;img alt=&quot;Exploring Ralph Driven Development&quot; src=&quot;https://www.itblogs.info/media/blogs/b/quick-uploads/p1132/.evocache/screenshot_2026-02-07_105613.png/fit-320x320.png?mtime=1770425786&quot; width=&quot;320&quot; height=&quot;157&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;After I read the article from &lt;a href=&quot;https://lukeparker.dev/stop-chatting-with-ai-start-loops-ralph-driven-development&quot;&gt;Stop Chatting with AI. Start Loops (Ralph Driven Development)&lt;/a&gt; from Luke Parker. I have tried the Ralph Driven Development.  That is mind-changing. In the past, I have used AI coding before, which is more like programming by chatting. But  Ralph Driven Development  is to loop the specification, executing the plan item by item. Then the AI agent will build the application without any human interaction. What I need to do is write the plan in very detailed steps, like “Creating User Management Page with CRUD functions, the edit window needs to be a modal window”. I need to write in very detail, like to teach 3 years old child. At the end, I built my home intranet. It has a to-do list and shopping list management. Moreover, I have hooked up with ollama. I can use the chat to access my to-do and shopping items. Of course, it has a full of bugs. I still need to test and debug (although in the plan, I told it to test it).&lt;/p&gt;

&lt;p&gt;Luke used OpenCode. For myself, I used kimi, that is relatively lower cost than Claude Code. &lt;/p&gt;

&lt;p&gt;My command is &lt;/p&gt;

&lt;p&gt;while ($true) { kimi -p  &quot;READ all of plan.md  Pick ONE task per timesso Verify via web/code search. Complete task, verify via CLI/Test output. Commit change. ONLY do one task.  Update plan.md. If you learn a critical operational detail (e.g. how to build), update AGENTS.md. If all tasks done, sleep 5s and exit. NEVER GIT  PUSH. ONLY COMMIT.&quot; --yes }&lt;/p&gt;

&lt;p&gt;That is working well, but it burned the quote very quick&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/exploring-ralph-driven-development?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div><a href="https://www.itblogs.info/media/blogs/b/quick-uploads/p1132/screenshot_2026-02-07_105613.png?mtime=1770425786" rel="lightbox[p1132]" id="link_162"><img alt="Exploring Ralph Driven Development" src="https://www.itblogs.info/media/blogs/b/quick-uploads/p1132/.evocache/screenshot_2026-02-07_105613.png/fit-320x320.png?mtime=1770425786" width="320" height="157" class="loadimg" /></a></div></div><p>After I read the article from <a href="https://lukeparker.dev/stop-chatting-with-ai-start-loops-ralph-driven-development">Stop Chatting with AI. Start Loops (Ralph Driven Development)</a> from Luke Parker. I have tried the Ralph Driven Development.  That is mind-changing. In the past, I have used AI coding before, which is more like programming by chatting. But  Ralph Driven Development  is to loop the specification, executing the plan item by item. Then the AI agent will build the application without any human interaction. What I need to do is write the plan in very detailed steps, like “Creating User Management Page with CRUD functions, the edit window needs to be a modal window”. I need to write in very detail, like to teach 3 years old child. At the end, I built my home intranet. It has a to-do list and shopping list management. Moreover, I have hooked up with ollama. I can use the chat to access my to-do and shopping items. Of course, it has a full of bugs. I still need to test and debug (although in the plan, I told it to test it).</p>

<p>Luke used OpenCode. For myself, I used kimi, that is relatively lower cost than Claude Code. </p>

<p>My command is </p>

<p>while ($true) { kimi -p  "READ all of plan.md  Pick ONE task per timesso Verify via web/code search. Complete task, verify via CLI/Test output. Commit change. ONLY do one task.  Update plan.md. If you learn a critical operational detail (e.g. how to build), update AGENTS.md. If all tasks done, sleep 5s and exit. NEVER GIT  PUSH. ONLY COMMIT." --yes }</p>

<p>That is working well, but it burned the quote very quick</p><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/exploring-ralph-driven-development?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/exploring-ralph-driven-development?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1132</wfw:commentRss>
		</item>
				<item>
			<title>ML.Net is downgraded</title>
			<link>https://www.itblogs.info/index.php/ml-net-is-downgraded?blog=3</link>
			<pubDate>Sat, 10 Jan 2026 00:46:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Announcements [B]</category>			<guid isPermaLink="false">1129@https://www.itblogs.info/</guid>
						<description>&lt;p&gt;During the past two years, artificial intelligence has been a hot topic. A lot of people are talking about openAI and MidJourney. That kind of generative AI. That sounds like something I forgot. It is still very useful for developers. It won’t generate codes like ClaudeCode. It can do the model prediction. (like price prediction or image classification),Unlike &quot;Pre-built AI&quot; (like some Azure Cognitive Services), you own the model and the data pipeline. You can see exactly how data is being transformed. You have local AI. For myself, I used to categorize my expenses.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;Common Use Cases for Developers&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;

  &lt;li&gt; Sentiment Analysis: Automatically tagging customer support tickets as &quot;Frustrated&quot; or &quot;Happy.&quot;&lt;/li&gt;
  &lt;li&gt;*Price Prediction: Estimating the value of a product or real estate based on historical features.&lt;/li&gt;
  &lt;li&gt;
Anomaly Detection: Real-time flagging of fraudulent credit card transactions.&lt;/li&gt;

  &lt;li&gt;Product Recommendations: &quot;Users who bought this also liked...&quot; features for e-commerce.&lt;/li&gt;

&lt;/ul&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/ml-net-is-downgraded?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>During the past two years, artificial intelligence has been a hot topic. A lot of people are talking about openAI and MidJourney. That kind of generative AI. That sounds like something I forgot. It is still very useful for developers. It won’t generate codes like ClaudeCode. It can do the model prediction. (like price prediction or image classification),Unlike "Pre-built AI" (like some Azure Cognitive Services), you own the model and the data pipeline. You can see exactly how data is being transformed. You have local AI. For myself, I used to categorize my expenses.</p>



<p><strong>Common Use Cases for Developers</strong></p>
<ul>

  <li> Sentiment Analysis: Automatically tagging customer support tickets as "Frustrated" or "Happy."</li>
  <li>*Price Prediction: Estimating the value of a product or real estate based on historical features.</li>
  <li>
Anomaly Detection: Real-time flagging of fraudulent credit card transactions.</li>

  <li>Product Recommendations: "Users who bought this also liked..." features for e-commerce.</li>

</ul><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/ml-net-is-downgraded?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/ml-net-is-downgraded?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1129</wfw:commentRss>
		</item>
				<item>
			<title>WinUI still needs the WinForm component</title>
			<link>https://www.itblogs.info/index.php/winui-still-needs-the-winform?blog=3</link>
			<pubDate>Mon, 06 Oct 2025 01:04:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Announcements [B]</category>			<guid isPermaLink="false">1127@https://www.itblogs.info/</guid>
						<description>&lt;p&gt;I am working on the Windows Desktop Application. Of Course, Now is 2025. I am building a new Windows application, and I think that WinUI is one of the best options I can think of. &lt;br /&gt;
However, WinUI is a kind of platform-independent, if you still need to access the local function such as the File Dialog, You still use to have Interpo.&lt;br /&gt;
     var picker = new FileOpenPicker();&lt;br /&gt;
     picker.FileTypeFilter.Add(&quot;.json&quot;);&lt;br /&gt;
     picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;&lt;/p&gt;

&lt;p&gt;     var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(this);&lt;br /&gt;
     WinRT.Interop.InitializeWithWindow.Initialize(picker, hwnd);&lt;br /&gt;
Here is the example&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/winui-still-needs-the-winform?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>I am working on the Windows Desktop Application. Of Course, Now is 2025. I am building a new Windows application, and I think that WinUI is one of the best options I can think of. <br />
However, WinUI is a kind of platform-independent, if you still need to access the local function such as the File Dialog, You still use to have Interpo.<br />
     var picker = new FileOpenPicker();<br />
     picker.FileTypeFilter.Add(".json");<br />
     picker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;</p>

<p>     var hwnd = WinRT.Interop.WindowNative.GetWindowHandle(this);<br />
     WinRT.Interop.InitializeWithWindow.Initialize(picker, hwnd);<br />
Here is the example</p><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/winui-still-needs-the-winform?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/winui-still-needs-the-winform?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1127</wfw:commentRss>
		</item>
				<item>
			<title>PostgreSQL in Azure</title>
			<link>https://www.itblogs.info/index.php/postgresql-in-azure?blog=3</link>
			<pubDate>Sat, 17 Feb 2024 05:56:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Announcements [B]</category>			<guid isPermaLink="false">1126@https://www.itblogs.info/</guid>
						<description>&lt;p&gt;Last Month, I went to the Brisbane.net user group. The topic is PostgreSQL.PostgreSQL? How can it be related to .Net? You may think that that is more related to Linux. That is not. Azure got Postsqesql implementation, which is customized for Azure. Thus, that is performance quite good.&lt;br /&gt;
Moreover, that is more than half the price of the MS SQL server option. Lastly, EF core is fully supported by Postgresql. They are very suitable for a small-scale project. I will explore it for my membership management system.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/postgresql-in-azure?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Last Month, I went to the Brisbane.net user group. The topic is PostgreSQL.PostgreSQL? How can it be related to .Net? You may think that that is more related to Linux. That is not. Azure got Postsqesql implementation, which is customized for Azure. Thus, that is performance quite good.<br />
Moreover, that is more than half the price of the MS SQL server option. Lastly, EF core is fully supported by Postgresql. They are very suitable for a small-scale project. I will explore it for my membership management system.</p><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/postgresql-in-azure?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/postgresql-in-azure?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1126</wfw:commentRss>
		</item>
				<item>
			<title>Best way to download in MAUI</title>
			<link>https://www.itblogs.info/index.php/best-way-to-download-in?blog=3</link>
			<pubDate>Mon, 22 Jan 2024 12:08:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="alt">Example Codes</category>
<category domain="alt">Programming</category>
<category domain="alt">Xamarin</category>
<category domain="main">MAUI</category>			<guid isPermaLink="false">1125@https://www.itblogs.info/</guid>
						<description>&lt;p&gt;Due to the discontinuation of Google Podcasts, I am writing my own Podcast App for Android. I chose C# MAUI because I am a C# Developer, and I have used Xamarin (become a part of MAUI now) for years. &lt;br /&gt;
My first problem is the Podcast App; I need to load the &lt;a href=&quot;http://webreference.fr/defintions/rss-atom-xml&quot;&gt;RSS&lt;/a&gt; (&lt;a href=&quot;http://www.tellmewhatis.com/xml&quot;&gt;XML&lt;/a&gt;) via HTTP. That is so easy. Same as other C# programs. Also, you can use to load any JSON information in different use case&lt;br /&gt;
&lt;p class=&quot;codeblock_title&quot;&gt;Code&lt;/p&gt;&lt;div class=&quot;codeblock codeblock_with_title amc_code amc_short&quot;&gt;&lt;table&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc1&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;var&amp;#160;&amp;#160;client = new HttpClient();&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_even&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc2&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;var string1 = client.GetStringAsync(&quot;https://podcast.rthk.hk/podcast/novamanage.xml&quot;).Result;&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr class=&quot;amc_code_odd&quot;&gt;&lt;td class=&quot;amc_line&quot;&gt;&lt;div class=&quot;amc3&quot;&gt;&lt;/div&gt;&lt;/td&gt;&lt;td&gt;&lt;code class=&quot;codeblock&quot;&gt;&lt;span class=&quot;amc_default&quot;&gt;// deserailize&lt;/span&gt;&lt;/code&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/best-way-to-download-in?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p>Due to the discontinuation of Google Podcasts, I am writing my own Podcast App for Android. I chose C# MAUI because I am a C# Developer, and I have used Xamarin (become a part of MAUI now) for years. <br />
My first problem is the Podcast App; I need to load the <a href="http://webreference.fr/defintions/rss-atom-xml">RSS</a> (<a href="http://www.tellmewhatis.com/xml">XML</a>) via HTTP. That is so easy. Same as other C# programs. Also, you can use to load any JSON information in different use case<br />
<p class="codeblock_title">Code</p><div class="codeblock codeblock_with_title amc_code amc_short"><table><tr class="amc_code_odd"><td class="amc_line"><div class="amc1"></div></td><td><code class="codeblock"><span class="amc_default">var&#160;&#160;client = new HttpClient();</span></code></td></tr><tr class="amc_code_even"><td class="amc_line"><div class="amc2"></div></td><td><code class="codeblock"><span class="amc_default">&#160;&#160;&#160;&#160;var string1 = client.GetStringAsync("https://podcast.rthk.hk/podcast/novamanage.xml").Result;</span></code></td></tr><tr class="amc_code_odd"><td class="amc_line"><div class="amc3"></div></td><td><code class="codeblock"><span class="amc_default">// deserailize</span></code></td></tr></table></div></p><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/best-way-to-download-in?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/best-way-to-download-in?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1125</wfw:commentRss>
		</item>
				<item>
			<title>PieChart of LiveChart</title>
			<link>https://www.itblogs.info/index.php/piechart-of-livechart-1?blog=3</link>
			<pubDate>Wed, 27 Dec 2023 01:05:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Announcements [B]</category>			<guid isPermaLink="false">1123@https://www.itblogs.info/</guid>
						<description>&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://www.itblogs.info/media/blogs/b/quick-uploads/p1123/_2023-12-27_104941.png?mtime=1703638571&quot; rel=&quot;lightbox[p1123]&quot; id=&quot;link_160&quot;&gt;&lt;img alt=&quot;PieChart of LiveChart&quot; src=&quot;https://www.itblogs.info/media/blogs/b/quick-uploads/p1123/.evocache/_2023-12-27_104941.png/fit-320x320.png?mtime=1703638571&quot; width=&quot;320&quot; height=&quot;236&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;For using the PieChart, that is very easy, you just need to bind the series collection&lt;br /&gt;
&lt;xmp&gt;&lt;lvc :PieChart x:Name=&quot;myPieChart&quot; LegendLocation=&quot;Bottom&quot;  Series=&quot;{Binding SeriesCollection }&quot;&gt;&lt;/lvc&gt;&lt;/xmp&gt;&lt;/p&gt;

&lt;p&gt;Then I just need to get the data from my repo:&lt;br /&gt;
&lt;!-- codeblock lang= line=1 --&gt;&lt;/p&gt;&lt;pre class=&quot;codeblock&quot;&gt;&lt;code&gt;
            var categories = new ObservableCollection&lt;budgetcategory&gt;(_database.BudgetCategories.GetAllCategories());

            SeriesCollection = new SeriesCollection();
            foreach (var category in categories)
            {
                var budgetItems = new ObservableCollection&lt;budgetitem&gt;(_database.BudgetItems.GetItemByCategory(category));
                double amount = 0;
                foreach (var item in budgetItems)
                {
                    amount += (double) item.Amount;
                }
                var pieSeries = new PieSeries
                {
                    Title = category.Name,
                    Values = new ChartValues&lt;observablevalue&gt; { new ObservableValue(amount) },
                    DataLabels = true
                };
                SeriesCollection.Add(pieSeries);
            }
         
        }  
&lt;/observablevalue&gt;&lt;/budgetitem&gt;&lt;/budgetcategory&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/piechart-of-livechart-1?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div><a href="https://www.itblogs.info/media/blogs/b/quick-uploads/p1123/_2023-12-27_104941.png?mtime=1703638571" rel="lightbox[p1123]" id="link_160"><img alt="PieChart of LiveChart" src="https://www.itblogs.info/media/blogs/b/quick-uploads/p1123/.evocache/_2023-12-27_104941.png/fit-320x320.png?mtime=1703638571" width="320" height="236" class="loadimg" /></a></div></div><p>For using the PieChart, that is very easy, you just need to bind the series collection<br />
<xmp><lvc :PieChart x:Name="myPieChart" LegendLocation="Bottom"  Series="{Binding SeriesCollection }"></lvc></xmp></p>

<p>Then I just need to get the data from my repo:<br />
<!-- codeblock lang= line=1 --></p><pre class="codeblock"><code>
            var categories = new ObservableCollection<budgetcategory>(_database.BudgetCategories.GetAllCategories());

            SeriesCollection = new SeriesCollection();
            foreach (var category in categories)
            {
                var budgetItems = new ObservableCollection<budgetitem>(_database.BudgetItems.GetItemByCategory(category));
                double amount = 0;
                foreach (var item in budgetItems)
                {
                    amount += (double) item.Amount;
                }
                var pieSeries = new PieSeries
                {
                    Title = category.Name,
                    Values = new ChartValues<observablevalue> { new ObservableValue(amount) },
                    DataLabels = true
                };
                SeriesCollection.Add(pieSeries);
            }
         
        }  
</observablevalue></budgetitem></budgetcategory></code></pre><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/piechart-of-livechart-1?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/piechart-of-livechart-1?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1123</wfw:commentRss>
		</item>
				<item>
			<title>Charting Tool for WPF</title>
			<link>https://www.itblogs.info/index.php/charting-tool-for-wpf?blog=3</link>
			<pubDate>Sat, 29 Apr 2023 23:54:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Announcements [B]</category>			<guid isPermaLink="false">1119@https://www.itblogs.info/</guid>
						<description>&lt;div&gt;&lt;div&gt;&lt;a href=&quot;https://www.itblogs.info/media/blogs/b/quick-uploads/p1119/livecharts.png?mtime=1682812453&quot; rel=&quot;lightbox[p1119]&quot; id=&quot;link_154&quot;&gt;&lt;img alt=&quot;Charting Tool for WPF&quot; src=&quot;https://www.itblogs.info/media/blogs/b/quick-uploads/p1119/.evocache/livecharts.png/fit-320x320.png?mtime=1682812453&quot; width=&quot;320&quot; height=&quot;171&quot; class=&quot;loadimg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Recently, we have been buying a WPF application. That is a budget management application. That is talking about money. Of course, charts need to play an important role. I have looked into various charting libraries. Some of them need to be paid. However, one is entirely open and completed under an MIT license. That does not require access to their AP. Charting is done locally. It supports everything, such as MAUI, Wpf, Winforms, and ASP.net. In addition, the documentation is alright. That is Live Charts.&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/charting-tool-for-wpf?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<div><div><a href="https://www.itblogs.info/media/blogs/b/quick-uploads/p1119/livecharts.png?mtime=1682812453" rel="lightbox[p1119]" id="link_154"><img alt="Charting Tool for WPF" src="https://www.itblogs.info/media/blogs/b/quick-uploads/p1119/.evocache/livecharts.png/fit-320x320.png?mtime=1682812453" width="320" height="171" class="loadimg" /></a></div></div><p>Recently, we have been buying a WPF application. That is a budget management application. That is talking about money. Of course, charts need to play an important role. I have looked into various charting libraries. Some of them need to be paid. However, one is entirely open and completed under an MIT license. That does not require access to their AP. Charting is done locally. It supports everything, such as MAUI, Wpf, Winforms, and ASP.net. In addition, the documentation is alright. That is Live Charts.</p><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/charting-tool-for-wpf?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/charting-tool-for-wpf?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1119</wfw:commentRss>
		</item>
				<item>
			<title>Solution for WPF Combo Box binding with a object type value</title>
			<link>https://www.itblogs.info/index.php/solution-for-wpf-combo-box?blog=3</link>
			<pubDate>Mon, 24 Apr 2023 12:17:00 +0000</pubDate>			<dc:creator>admin</dc:creator>
			<category domain="main">Announcements [B]</category>			<guid isPermaLink="false">1118@https://www.itblogs.info/</guid>
						<description>&lt;p&gt;&lt;style&gt;
        pre {
            background-color: #f8f8f8;
            padding: 10px;
            border-radius: 5px;
            font-family: &#039;Courier New&#039;, Courier, monospace;
        }
    &lt;/style&gt;&lt;/p&gt;
&lt;p&gt;I found that the ComboBox WPF binding in WPF does not work correctly if the binding value is of an object type. Even when I set SelectedValuePath=&quot;Id&quot;, the binding fails to set the value. When a different value in the ComboBox is selected, the new selected value should be set in the ViewModel too. However, this does not happen this way.&lt;/p&gt;

    &lt;p&gt;I got a solution for this issue, which is to set the SelectedValue to be the CategoryId:&lt;/p&gt;
    &lt;pre&gt;
&amp;lt;ComboBox Grid.Row=&quot;3&quot; Grid.Column=&quot;1&quot; 
          ItemsSource=&quot;{Binding CategoryList}&quot;
          DisplayMemberPath=&quot;Name&quot; 
          SelectedItem=&quot;CategoryId&quot;
          SelectedValue=&quot;{Binding CategoryId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}&quot;
          SelectedValuePath=&quot;Id&quot; 
          Margin=&quot;5&quot;/&amp;gt;
    &lt;/pre&gt;

    &lt;p&gt;Inside the ViewModel:&lt;/p&gt;
    &lt;pre&gt;
public int CategoryId
{
    get =&gt; _selectedCategoryId;
    set
    {
        if (_selectedCategoryId != value)
        {
            //_selectedCategory = value;
            _item.CategoryId = value;
            _item.Category = CategoryList.FirstOrDefault(c =&gt; c.Id == value);
            OnPropertyChanged();
        }
    }
}
    &lt;/pre&gt;

    &lt;p&gt;Then it will work!&lt;/p&gt;&lt;div class=&quot;item_footer&quot;&gt;&lt;p&gt;&lt;small&gt;&lt;a href=&quot;https://www.itblogs.info/index.php/solution-for-wpf-combo-box?blog=3&quot;&gt;Original post&lt;/a&gt; blogged on &lt;a href=&quot;http://b2evolution.net/&quot;&gt;b2evolution&lt;/a&gt;.&lt;/small&gt;&lt;/p&gt;&lt;/div&gt;</description>
			<content:encoded><![CDATA[<p><style>
        pre {
            background-color: #f8f8f8;
            padding: 10px;
            border-radius: 5px;
            font-family: 'Courier New', Courier, monospace;
        }
    </style></p>
<p>I found that the ComboBox WPF binding in WPF does not work correctly if the binding value is of an object type. Even when I set SelectedValuePath="Id", the binding fails to set the value. When a different value in the ComboBox is selected, the new selected value should be set in the ViewModel too. However, this does not happen this way.</p>

    <p>I got a solution for this issue, which is to set the SelectedValue to be the CategoryId:</p>
    <pre>
&lt;ComboBox Grid.Row="3" Grid.Column="1" 
          ItemsSource="{Binding CategoryList}"
          DisplayMemberPath="Name" 
          SelectedItem="CategoryId"
          SelectedValue="{Binding CategoryId, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
          SelectedValuePath="Id" 
          Margin="5"/&gt;
    </pre>

    <p>Inside the ViewModel:</p>
    <pre>
public int CategoryId
{
    get => _selectedCategoryId;
    set
    {
        if (_selectedCategoryId != value)
        {
            //_selectedCategory = value;
            _item.CategoryId = value;
            _item.Category = CategoryList.FirstOrDefault(c => c.Id == value);
            OnPropertyChanged();
        }
    }
}
    </pre>

    <p>Then it will work!</p><div class="item_footer"><p><small><a href="https://www.itblogs.info/index.php/solution-for-wpf-combo-box?blog=3">Original post</a> blogged on <a href="http://b2evolution.net/">b2evolution</a>.</small></p></div>]]></content:encoded>
								<comments>https://www.itblogs.info/index.php/solution-for-wpf-combo-box?blog=3#comments</comments>
			<wfw:commentRss>https://www.itblogs.info/index.php?blog=3&#38;tempskin=_rss2&#38;disp=comments&#38;p=1118</wfw:commentRss>
		</item>
			</channel>
</rss>
