看來在WPF中,我無法綁定到對象上的公共字段,而只能綁定到公共屬性。這是WPF的一個有意設計決定,還是我剛剛得到的語法錯誤?爲什麼我不能綁定到WPF中的類上的字段而不是綁定到屬性
下面是一個示例代碼段:
public class User
{
public string Username;
public string FullName;
public string DisplayName
{
get { return FullName; }
}
}
WPF段:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="User Tool" >
<Window.Resources>
<DataTemplate x:Key="UserTemplate">
<TextBlock Text="{Binding Path=DisplayName}" />
</DataTemplate>
</Window.Resources>
<ListBox Name="listBoxUsers" ItemTemplate="{StaticResource UserTemplate}" ItemsSource="..." />
</Window>
如果我更改綁定路徑用戶名或全名,什麼也不顯示在屏幕上。是否有一種替代語法綁定到字段,或僅綁定到屬性上?
正如答案所說,它需要是一個財產。無論如何,這是「更好的面向對象程序設計」(信息隱藏等),使你的領域是私密的,並通過屬性暴露出來。另外它有助於編寫諸如DependencyProperties之類的東西,並實現INotifyPropertyChanged和其他好東西。 – 2010-10-21 17:06:21
我正在使用的特定情況是使用FileHelpers庫來填充CSV中的項目,並且FileHelpers似乎不支持將引用字段填充到屬性中,這迫使我使用字段。對於更好的面向對象,你肯定是對的,在這種情況下它很笨拙。 – 2010-10-21 17:20:02