[問題] 有關binding的問題

看板C_Sharp (C#)作者 (蝦米)時間9年前 (2015/12/08 19:47), 9年前編輯推噓1(103)
留言4則, 2人參與, 最新討論串1/1
各位版友大家好 我最近有個WPF程式binding使用上的問題想請教 因為我也剛學沒多久如果我有觀念上的錯誤也請指證 在程式方面我需要把xaml檔上面的<ellipse>的Fill、Width等的參數 預先定義在另一個xml檔裡在從xaml繫結過去簡單格式如下: <Data> <circle> <Fill>black</Fill> </circle> </Data> 而在xaml檔則是先給binding來源 <Window.Resources> <XmlDataProvider x:Key="aaa" Source="bbb.xml" XPath="Data"/> </Window.Resources> 然後在<ellipse>裡binding到xml裡的參數: <Ellipse x:Name="circle" DataContext="{Binding Source={StaticResource aaa}}" Fill="{Binding XPath=/Data/circle/Fill}"> 現在的困惑點在於如果我想加一個reload按鈕在我修改了xml檔存檔後 能夠直接反映修改後參數不重新compiler畫出新的ellipse圖形應該要怎麼做? 有先試著用Refresh()來寫但還是沒用 感覺他在畫出circle圓後就直接寫死了 我也有將xaml binding模式改成two way以及dynamicresource但是都無效不會刷新 我現在在嘗試想說能不能在按下按鈕的時後先將原本物件清掉 (canvas.Children.Remove(circle))之後在讓它重新刷新binding的內容 可是又感覺這想法好像不太對= = 想請問我的問題是在哪邊呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.139.192.94 ※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1449575230.A.603.html

12/08 20:07, , 1F
INotifyPropertyChanged
12/08 20:07, 1F
您好後來我有去網上找過資料試著在程式裡加了段: public class item : INotifyPropertyChanged { private string _Fill; public string Fill { get { return _Fill; } set { _Fill = value; OnPropertyChanged("Fill"); } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyname) { if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyname)); } } } 如果先以Fill為例我先試著加了這段碼 但是有個問題就是我不清楚 如何將來源Xml檔的Fill丟進來 請問我應該怎麼做呢? ※ 編輯: qsx889 (223.139.192.94), 12/09/2015 19:28:35 ※ 編輯: qsx889 (223.139.192.94), 12/11/2015 11:58:10

12/12 18:08, , 2F
我猜應該是要用程式碼去讀xml檔裡面的值
12/12 18:08, 2F

12/12 18:10, , 3F
然後用程式碼的方式加圓和指定fill
12/12 18:10, 3F

12/12 18:11, , 4F
讀xml檔可以研究一下Xelement和裡面的取值方法
12/12 18:11, 4F
文章代碼(AID): #1MPiC-O3 (C_Sharp)
文章代碼(AID): #1MPiC-O3 (C_Sharp)