我有点纳闷:这是可行的:
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Label Content="Rol" />
<ComboBox ItemTemplate="{StaticResource listRollen}"
Height="23" Width="150"
SelectedItem="{Binding Path=SelectedRol, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
ItemsSource="{Binding Path=allRollen, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" />
</StackPanel>
SelectedRol的属性为:
public TblRollen SelectedRol
{
get { return _selectedRol; }
set
{
if (_selectedRol != value)
{
_selectedRol = value;
OnPropertyChanged("SelectedRol");
}
}
}
但这行不通:
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
<Label Content="Soort" />
<ComboBox ItemTemplate="{StaticResource listSoorten}"
Height="23" Width="150"
ItemsSource="{Binding Path=allSoorten}"
SelectedItem="{Binding Path=SelectedProduct, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>
</StackPanel>
具有以下属性SelectedProduct:
public TblProduktSoorten SelectedProduct
{
get { return _selectedPSoort; }
set
{
if (_selectedPSoort != value)
{
_selectedPSoort = value;
OnPropertyChanged("SelectedProduct");
}
}
}
在我的代码中的某个地方我设置了SelectedProduct = p.TblProduktSoorten
,在调试时,我看到属性设置正确...
8条答案
按热度按时间0md85ypi1#
DataGrid中的组合框?
如果组合框位于
DataGrid
中,则必须添加以下内容:请参见:https://stackoverflow.com/a/5669426/16940
kqqjbcuj2#
尝试使用非选定项而是值路径查看代码示例
所述结合特性
polhcujo3#
这可能与apparently attribute order does matter有关,在第二种情况下,
ItemsSource
和SelectedItem
声明交换了。8fsztsew4#
如果在属性更改事件处理程序中更改SelectedProduct时设置SelectedProduct属性,则需要异步设置此属性。
3xiyfsfu5#
我的问题是由我自己疲惫的大脑引起的。同样的症状,也许它会让你看到你的问题。
设置SelectedItem必须在List中指定一个项目!!(duhh)通常这是自然发生的,但我有一个案例,我从另一个服务(相同的对象类型)获得了一个“角色”,并试图设置它,并期望组合框发生变化!;(
而不是-
记得这样做-
pu82cl6c6#
我不知道你是否修复了这个问题,但我今天遇到了同样的问题。通过确保selecteditems的集合是ObservableCollection,这个问题得到了修复。
uinbv5nw7#
我认为这个问题是由ItemSource的类型和SelectedItem不匹配引起的。
例如,如果ItemSource系结至int的List,而SelectedItem系结至string。如果您将选取的项目设定为null或空字串,则下拉式方块无法知道选取了什麽项目。因此下拉式方块将不会显示任何内容。
syqv5f0l8#
这可能是旧的,但我还没有看到的技巧,为我做;我必须将
NotifyOnSourceupdate=true
添加到组合框中的SelectedItem