OK。這是WPF,我試圖將我的窗口綁定到ViewModel。虛擬機看起來是這樣的:WPF綁定:綁定到DataContext的父代
public class VM
{
public SalesRecord SR {get; set;}
public List<string> AllSalesTypes {get; set;}
}
public class SalesRecord
{
public int ID {get; set;}
public DateTime Date {get; set;}
}
這裏是我的XAML:
...
<TextBox Text="{Binding Path=ID, Mode=TwoWay}" />
<TextBox Text="{Binding Path=Date, Mode=TwoWay}" />
<ComboBox ItemsSource="{Binding AllSalesTypes}" Text="{Binding Path=SalesType, Mode=TwoWay}" />
...
我在運行時設置數據上下文的對象是這樣的:
this.DataContext = _vm.SR;
現在結合表達式適用於指向SR
對象(例如ID
和Date
)的屬性的所有我的TextBoxes
,bu t ComboBox
需要顯示所有SalesType的列表不起作用,顯然是因爲AllSalesTypes
是類的成員。
我的問題是:有沒有辦法編寫一個綁定表達式來查看當前DataContext
的父項而不是自身?
這是我已經寫過的答案,但你的速度更快。但是...當您將DataContext設置爲VM並使用Text =「{Binding SR.ID}」時,如果更改SR的某些屬性,則不會引發PropertyChanged事件。如果要將這些更改傳播到TextBox的Text屬性,則必須提高它。但是是的:)拿起我的贊同:) – 2013-02-17 13:55:08
@ViktorLaCroix正確的,就像任何其他類你想在UI中看到變化 - SalesRecord也應該實現INotifyPropertyChanged – Blachshma 2013-02-17 14:22:04
是的......或者你可以RaisePropertyChanged(「SR」)在虛擬機...也工作:)和SalesRecord不必實施INotifyPropertyChanged – 2013-02-17 14:23:59