說,例如我有以下類型:從視圖中綁定到ViewModel中的複雜對象?
public class Site
{
public string Name { get; set; }
public int SiteId { get; set; }
public bool IsLocal { get; set; }
}
上述類型可以被分配在一個歡迎使用屬性被保持在一個ViewModel像這樣假設的對應支持字段已創建,但這裏省略OFC:
public Site SelectedSite
{
get { return _selectedSite; }
set
{
_selectedSite = value;
// raise property changed etc
}
}
在我的XAML中直正向結合將是:
<TextBlock x:Name="StatusMessageTextBlock"
Width="Auto"
Height="Auto"
Style="{StaticResource StatusMessageboxTextStyle}"
Text="{Binding MessageToDisplay,
Mode=OneWay,
UpdateSourceTrigger=PropertyChanged}" />
可以通過使用點符號語法擴展綁定?例如:
<TextBlock x:Name="StatusMessageTextBlock"
Width="Auto"
Height="Auto"
Style="{StaticResource StatusMessageboxTextStyle}"
**Text="{Binding SelectedSite.Name,**
Mode=OneWay,
UpdateSourceTrigger=PropertyChanged}" />
似乎是一個有趣的功能,但我的直覺是沒有一個我的DC是在運行時被分配所以在設計時或編譯時,我看不到任何線索,可以實現此功能,或不?
糾正我,如果誤解了一個複雜的對象是什麼,我簡化了我的這個問題。
嗯......你是說我的簡單類型'網站'需要實現'INotifyPropertyChanged'界面? – IbrarMumtaz 2012-04-19 19:29:22
@IbrarMumtaz:如果你有改變的屬性(比如'Name'),那麼是的。如果類型中的所有屬性都是隻讀的,那麼不需要實現'INotifyPropertyChanged',因爲沒有屬性會改變。 – 2012-04-19 19:31:18
我正在使用MVVM Light框架,這使得事情變得更容易,但我不熟悉實現此接口的自定義類型的技術,我一直認爲這是您的ViewModels必須執行此操作。有一篇文章解釋了這種方法? – IbrarMumtaz 2012-04-19 19:31:30