クラス SInstance のプロパティ LogicalP にバインドされた wpf コンボボックスがあります。コンボボックスの ItemSource は、LogicalP 型のアイテムを含むディクショナリです。
SInstance の LogicalP を初期状態に設定すると、コンボ ボックスのテキスト フィールドに何も表示されません。プルダウンを選択すると、辞書の値がすべて表示されます。選択を変更すると、SInstance の LogicalP が正しく更新されます。C# で Sinstance を変更すると、プルダウンから更新された LogicalP が適切なコンボボックスの値に反映されません。
バインディングモードを双方向に設定しましたが、うまくいきませんでした。何かご意見は?
私の 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
}