tag:blogger.com,1999:blog-5568487626320436410.post1053415742940350123..comments2023-05-30T17:01:00.850+08:00Comments on 邊緣技術宅羅根: Xamarin.Forms 教學系列文(十八.壹 - 1) MVVM - INPC 縮寫羅根http://www.blogger.com/profile/17201760900008110974noreply@blogger.comBlogger14125tag:blogger.com,1999:blog-5568487626320436410.post-17160601316576158332019-04-22T14:16:57.829+08:002019-04-22T14:16:57.829+08:00羅根大你好,你的程式碼也是可以用的,但我之前試的時候,可能有多宣告一些model導致
無法bindi...羅根大你好,你的程式碼也是可以用的,但我之前試的時候,可能有多宣告一些model導致<br />無法binding,在此跟你通知。在一次的感謝您的回覆及建議Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-66922711670896134002019-04-22T12:22:12.941+08:002019-04-22T12:22:12.941+08:00有試過羅大的程式碼,但是MyRegion依然是binding不到資料有試過羅大的程式碼,但是MyRegion依然是binding不到資料Anonymoushttps://www.blogger.com/profile/05681585641831473426noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-42361848759270658162019-04-22T11:53:22.942+08:002019-04-22T11:53:22.942+08:00羅根大我真的感到很不好意思!!!,先跟你說聲抱歉。
我看了你的程式碼,發現一個我之前沒想過得語法
I...羅根大我真的感到很不好意思!!!,先跟你說聲抱歉。<br />我看了你的程式碼,發現一個我之前沒想過得語法<br />ItemsSource="{Binding MyRegion}"<br />ItemDisplayBinding="{Binding .}"<br />就是ItemDisplayBinding裡面的「.」,我程式碼都沒更改只是在<br />xaml的RegionPicker的Binding改成<br />Picker x:Name="RegionPicker" <br />Title="鄉鎮區選擇"<br />ItemsSource="{Binding SelectedCity.Regions}"<br />ItemDisplayBinding="{Binding .}"/><br />在之前我宣告一個model為<br />public class City<br /> {<br /> public int Key { get; set; }<br /> public string Name { get; set; }<br /> public List Regions { get; set; }<br /> public City()<br /> {<br /> Regions = new List();<br /> }<br /> }<br />問題解決了,非常感謝你。你的回覆是我思考的一個正確的方向!!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-33851417695406732012019-04-21T19:45:58.917+08:002019-04-21T19:45:58.917+08:00有試上面我給的程式碼嗎? 我實際執行後是沒問題的...有試上面我給的程式碼嗎? 我實際執行後是沒問題的...羅根https://www.blogger.com/profile/17201760900008110974noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-61946215663176876072019-04-21T14:12:53.328+08:002019-04-21T14:12:53.328+08:00羅根你好,我再次去詳讀了關於Picker的xamarin文件,在第二個段落的第一句「Xamarin....羅根你好,我再次去詳讀了關於Picker的xamarin文件,在第二個段落的第一句「Xamarin.Forms 2.3.4,填入的程序之前 Picker 的資料「已加入的資料顯示為唯讀 Items 集合」,其中的型別IList. 集合中的每個項目必須是型別string。 」Prior to Xamarin.Forms 2.3.4, the process for populating a Picker with data was to add the data to be displayed to the 「read-only」 Items collection, which is of type IList. <br />我解讀成Picker只能夠Binding readonly的資料。在我的行為中,MyRegion並不是readonly而是會跟著selcetitem改變的資料,因此無法藉由Picker完成,也許要用listView來取代RegionPicker才能夠完成。Ysjhttps://www.blogger.com/profile/12883703877472871543noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-35406625486010129912019-04-21T00:42:37.279+08:002019-04-21T00:42:37.279+08:00「CityPicker 的 SelectedItem 做更改時,同時去更改 MyRegion」我在程...「CityPicker 的 SelectedItem 做更改時,同時去更改 MyRegion」我在程式碼使用foreach的方式將Regions = { "CenterK", "EastK", "NorthK", "WestK", "SouthK" }填入_myregion,在debug model中是可以看到public List MyRegion的值的確被正確填入,而在xaml的RegionPicker的ItemSource是Binding MyRegion,而ItemDisplayBinding是Binding RegionName(有宣告在MyRegion的屬性),我最不解的是,『在debugmodel底下,可以看到MyRegion的值,在xaml也宣告的沒問題,為何會Binding不到,有可能是被GC了嘛?Ysjhttps://www.blogger.com/profile/12883703877472871543noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-39246149658911651182019-04-19T00:36:43.575+08:002019-04-19T00:36:43.575+08:00感謝您的回覆,我會試試看。感謝您的回覆,我會試試看。Ysjhttps://www.blogger.com/profile/12883703877472871543noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-18922729134800059152019-04-19T00:36:08.016+08:002019-04-19T00:36:08.016+08:00作者已經移除這則留言。Ysjhttps://www.blogger.com/profile/12883703877472871543noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-45207318101966395742019-04-18T23:39:11.442+08:002019-04-18T23:39:11.442+08:00View
Picker x:Name="CityPicker"
...View<br />Picker x:Name="CityPicker" <br /> Title= "City" <br /> ItemsSource="{Binding CitiesList}"<br /> ItemDisplayBinding="{Binding Name}"<br /> SelectedItem="{Binding SelectedCity}"<br /><br /> Picker x:Name="RegionPicker"<br /> Title="Region"<br /> ItemsSource="{Binding MyRegion}"<br /> ItemDisplayBinding="{Binding .}"羅根https://www.blogger.com/profile/17201760900008110974noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-58335597576440256222019-04-18T23:37:22.738+08:002019-04-18T23:37:22.738+08:00完整 ViewModel
class CityViewModel : ViewModelBase
...完整 ViewModel<br />class CityViewModel : ViewModelBase<br /> {<br /> private City _selectedCity;<br /> public City SelectedCity<br /> {<br /> get { return _selectedCity; }<br /> set<br /> {<br /> if (_selectedCity != value)<br /> {<br /> _selectedCity = value;<br /><br /> MyRegion = CitiesList<br /> .Where(x => x.Name == _selectedCity.Name).SelectMany(s => s.Regions).ToList();<br /> }<br /> }<br /> }<br /><br /> List _myregion;<br /> public List MyRegion<br /> {<br /> set { SetProperty(ref _myregion, value); }<br /> get { return _myregion; }<br /> }<br /><br /> public List CitiesList<br /> {<br /> get<br /> {<br /> return new List()<br /> {<br /> new City() { Key = 1, Name = "Keelung", Regions = { "CenterK", "EastK", "NorthK", "WestK", "SouthK" } },<br /> new City() { Key = 2, Name = "Hsinchu", Regions = { "HEast", "HNorth", "HCenter" } },<br /> new City() { Key = 3, Name = "Chiayi", Regions = { "CEast", "CWest" } }<br /> };<br /> }<br /> }<br /> }羅根https://www.blogger.com/profile/17201760900008110974noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-18748726823527907082019-04-18T23:36:32.293+08:002019-04-18T23:36:32.293+08:00所以思考要回到 ViewModel 內,我的 RegionPicker 的 ItemSource 應...所以思考要回到 ViewModel 內,我的 RegionPicker 的 ItemSource 應該要跟 ViewModel 內的某個屬性綁定,例如 MyRegion (注意這個屬性是能夠做雙向溝通的,意思就是當 MyRegion 更改時有辦法去通知 View),當我 CityPicker 的 SelectedItem 做更改時,同時去更改 MyRegion羅根https://www.blogger.com/profile/17201760900008110974noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-23455994133919225052019-04-18T23:33:03.042+08:002019-04-18T23:33:03.042+08:00綁定的觀念不對,程式碼內 x:Reference 意思是將 RegionPicker 與 CityP...綁定的觀念不對,程式碼內 x:Reference 意思是將 RegionPicker 與 CityPicker 綁定,但是 CityPicker 並沒有 MyRegion 這個屬性羅根https://www.blogger.com/profile/17201760900008110974noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-91792925918580216212019-04-18T22:52:54.765+08:002019-04-18T22:52:54.765+08:00羅根大你好
我在https://forums.xamarin.com/discussion/comm...羅根大你好<br />我在https://forums.xamarin.com/discussion/comment/371718#Comment_371718<br />有發問,Picker相關的問題,同樣是用mvvm的架構,其中有一個citypicker可以binding到viewmodel的資料<br />但是regionpicker則binding不到,想請教是為什麼呢?Ysjhttps://www.blogger.com/profile/12883703877472871543noreply@blogger.comtag:blogger.com,1999:blog-5568487626320436410.post-52782731283898654312019-04-18T22:40:14.187+08:002019-04-18T22:40:14.187+08:00作者已經移除這則留言。Ysjhttps://www.blogger.com/profile/12883703877472871543noreply@blogger.com