作者qsx889 (虾米)
看板C_Sharp
标题[问题] 有关binding的问题
时间Tue Dec 8 19:47:06 2015
各位版友大家好
我最近有个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://webptt.com/cn.aspx?n=bbs/C_Sharp/M.1449575230.A.603.html
1F:推 YahooTaiwan: INotifyPropertyChanged12/08 20:07
您好後来我有去网上找过资料试着在程式里加了段:
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
2F:→ name2name2: 我猜应该是要用程式码去读xml档里面的值 12/12 18:08
3F:→ name2name2: 然後用程式码的方式加圆和指定fill 12/12 18:10
4F:→ name2name2: 读xml档可以研究一下Xelement和里面的取值方法 12/12 18:11