我可以将WPF控件绑定到字段的属性吗?
因为我需要在类之间拆分某些function,所以我遇到了以下情况
xaml代码
查看模型
... public MyInternalObject MyObjectField; ...
MyObject类
public class MyInternalObject { ... public bool MyBoolean { get; set; } ... }
除非我在View Model类中复制MyBoolean属性,否则它不起作用。
public bool MyBoolean { get { return MyInternalObject.MyBoolean; } set { MyInternalObject.MyBoolean=value; } }
有没有人有想法?
不,你不能。 因为绑定系统使用Reflection来查找
DataContext中的属性(即您的VM)
它不寻找领域。 我希望这将有所帮助。
您还不能( 在WPF版本4.5中,您可以绑定到静态属性 )。 但您可以在App.xaml.cs中创建属性
public partial class App : Application { public bool MyBoolean { get; set; } }
从各处绑定。
我没有将元素绑定到字段的属性,而是将元素的DataContext更改为必需的字段。
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); MainWindowView mainWindowView = new MainWindowView(); var mainWindowViewModel = new MainWindowViewModel(); mainWindowView.DataContext = mainWindowViewModel; mainWindowView.pagerView.DataContext = mainWindowViewModel.pager; mainWindowView.Show(); }
在这个例子中,我有一个DataGrid和Pager(第一页,上一页,下一页,最后一页)。 MainWindowView的元素(包括DataGrid)绑定到MainWindowViewModel中的属性,但是寻呼机按钮绑定到mainWindowViewModel.pager的属性。
MainWindowView:
PagerView: