我可以将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: