我有一个似乎没有更新SelectedItem/SelectedValue的ComboBox.
组合框ItemsSource绑定到上列出一串RAS电话簿条目作为一个的CollectionView的视图模型类的属性.然后,我必然(在不同的时间)两个SelectedItem或SelectedValue到视图模型的另一个属性.我在save命令中添加了一个MessageBox来调试数据绑定设置的值,但是没有设置SelectedItem/ SelectedValuebinding.
ViewModel类看起来像这样:
public ConnectionViewModel
{
private readonly CollectionView _phonebookEntries;
private string _phonebookeEntry;
public CollectionView PhonebookEntries
{
get { return _phonebookEntries; }
}
public string PhonebookEntry
{
get { return _phonebookEntry; }
set
{
if (_phonebookEntry == value) return;
_phonebookEntry = value;
OnPropertyChanged("PhonebookEntry");
}
}
}
Run Code Online (Sandbox Code Playgroud)
_phonebookEntries集合正在构造函数中从业务对象初始化.ComboBox XAML看起来像这样:
<ComboBox ItemsSource="{Binding Path=PhonebookEntries}"
DisplayMemberPath="Name"
SelectedValuePath="Name"
SelectedValue="{Binding Path=PhonebookEntry}" />
Run Code Online (Sandbox Code Playgroud)
我只在下拉列表中显示的实际字符串值感兴趣的对象,因为这不是任何其他属性是我需要跨到RAS通过时,我想使VPN连接,因此价值DisplayMemberPath和SelectedValuePath都的名称属性ConnectionViewModel.ComboBox DataTemplate应用于ItemsControl一个Window,其DataContext已设置为ViewModel实例.
ComboBox正确显示项目列表,我可以在UI中选择一个没有问题.但是,当我从命令中显示消息框时,PhonebookEntry属性仍然具有初始值,而不是ComboBox中的选定值.其他TextBox实例正在更新并在MessageBox中显示.
使用数据绑定ComboBox我错过了什么?我做了很多搜索,似乎找不到任何我做错的事.
这是我所看到的行为,但是在我的特定情况下,它不能用于某种原因.
我有一个MainWindowViewModel,它有一个CollectionViewConnectionViewModel.在MainWindowView.xaml文件代码隐藏中,我将DataContext设置为MainWindowViewModel.MainWindowView.xaml ItemsControl …
我有两个属性,一个是字符串列表,另一个是字符串.
private List<String> _property;
public List<String> Property
get
{
return new List<string>(){"string1", "string2"};
}
set{_property = value
}
public String SimpleStringProperty{get;set;}
Run Code Online (Sandbox Code Playgroud)
我也有一个在XAML中定义的Combobox
<Combobox ItemsSource="{Binding Property , Mode="TwoWay"}" Text="Select Option" />
Run Code Online (Sandbox Code Playgroud)
现在组合框正确显示两个选项:"string1"和"string2"
当用户选择一个或另一个时,我想设置SimpleStringProperty该值.然而,通过双向绑定从组合框中返回的"值"不是selectedItem,而是List<String>.我怎么能这样做?我对wpf很新,所以请原谅业余爱好者.
我有3个表:Item - 这是DataContext - 它有一个导航列Group Group - 有一个导航列Category.
我希望在DataGrid中包含(类别和组)列,当我选择一个类别时,它应该只在组列中显示Category.Groups.
这是我正在处理的代码:
<tk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding}">
<tk:DataGrid.Columns>
<!--Works-->
<tk:DataGridComboBoxColumn
Header="Categroy"
DisplayMemberPath="Title"
SelectedValuePath="CategoryId"
SelectedValueBinding="{Binding Group.Category.CategoryId}"
ItemsSource="{Binding Context.Categories,
Source={x:Static Application.Current}}"
/>
<!--Look at these two things:-->
<!--This does work-->
<tk:DataGridTemplateColumn>
<tk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ItemsControl
ItemsSource="{Binding Group.Category.Groups}">
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type data:Group}">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</DataTemplate>
</tk:DataGridTemplateColumn.CellTemplate>
</tk:DataGridTemplateColumn>
<!--But this does NOT work, even it's the same source-->
<!--Notice I even tried a dummy converter and doesnt reach there-->
<tk:DataGridComboBoxColumn
Header="Group"
DisplayMemberPath="Title"
SelectedValuePath="GroupId"
ItemsSource="{Binding Group.Category.Groups, …Run Code Online (Sandbox Code Playgroud)