我有一個wpf組合框綁定到類SInstance的屬性LogicalP。組合框的ItemSource是一個包含LogicalP類型項目的字典。WPF Combobox初始字典綁定值沒有顯示
如果我將SInstance中的LogicalP設置爲初始狀態,則組合框文本字段顯示爲空。如果我選擇下拉列表,我所有的字典值都在那裏。當我在SInstance中更改選擇LogicalP時會正確更新。如果我在C#中更改Sinstance,則相應的組合框值不會反映從下拉菜單中更新的LogicalP。
我已經將綁定模式設置爲twoway而沒有運氣。有什麼想法嗎?
我的XAML:
<UserControl.Resources>
<ObjectDataProvider x:Key="PList"
ObjectType="{x:Type src:MainWindow}"
MethodName="GetLogPList"/>
</UserControl.Resources>
<DataTemplate DataType="{x:Type src:SInstance}">
<Grid>
<ComboBox ItemsSource="{Binding Source={StaticResource PList}}"
DisplayMemberPath ="Value.Name"
SelectedValuePath="Value"
SelectedValue="{Binding Path=LogicalP,Mode=TwoWay}">
</ComboBox>
</Grid>
</DataTemplate>
我的C#:
public Dictionary<string, LogicalPType> LogPList { get; private set; }
public Dictionary<string, LogicalPType> GetLogPList()
{
return LogPList;
}
public class LogicalPType
{
public string Name { get; set; }
public string C { get; set; }
public string M { get; set; }
}
public class SInstance : INotifyPropertyChanged
{
private LogicalPType _LogicalP;
public string Name { get; set; }
public LogicalPType LogicalP
{
get { return _LogicalP; }
set
{
if (_LogicalP != value)
{
_LogicalP = value;
NotifyPropertyChanged("LogicalP");
}
}
}
#region INotifyPropertyChanged Members
#endregion
}
我不知道你是否理解這個問題。當我更改組合框上的選擇時,基礎綁定對象(SInstance)被更新,它保持空白。 但是,當我更改SInstance中的屬性時,Combobox不會更新以反映所選項目。 – user2367856
是的,我明白。顯示如何爲C#中的LogicalP賦值。 – Paparazzi
對不起,我沒有在主窗體加載中顯示LogPList字典的代碼。我確實找到了解決這個問題的方法,這個方案可以讓綁定變成雙向的。我會將其修改爲原始文章。 – user2367856