我希望将Combobox的SelectedItem绑定到“DataGridTextColumn”之后。我正在使用MVVM模式。
<Datagrid>
<DataGridTemplateColumn Header="Left">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox Name="Leftcombo" ItemsSource="{Binding Path=DataContext.Column, RelativeSource={RelativeSource AncestorType=Window}}" SelectedItem="{Binding SelectedColumn, UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Header="Right" Binding="{Binding ElementName=Leftcombo, Path=SelectedItem.Value, Mode=OneWay, UpdateSourceTrigger=PropertyChanged}"/>
</DataGrid.Columns>
</DataGrid>
答案 0 :(得分:0)
几乎在那里,但为什么你的绑定路径SelectedItem.Value
,对象是否有属性Value
?如果您只想要所选项目,请使用SelectedItem:
<DataGridTextColumn Header="Right" Binding="{Binding ElementName=Leftcombo, Path=SelectedItem, Mode=OneWay}"/>
哦等等ComboBox
的ItemSource,您只需要DataGridTextColumn
上的绑定来阅读ComboBox
当前所选的项目ComboBox
应绑定到项目列表,例如:
<ComboBox Name="Leftcombo" ItemsSource="{Binding Path=Collection}"/>
然后在你的ViewModel(或任何你的DataContext
)上,你有一组要在组合框中显示的项目,例如
public class ViewModel : INotifyPropertyChanged
{
// use ObservableCollection<T> if you want to add remove items after assigning
private List<string> _collection;
public List<string> Collection
{
get { return _collection; }
set
{
_collection = value;
RaiseNotifyPropertyChanged("Collection");
}
}
显然你需要设置集合,但这是主题......
提示:检查调试输出窗口是否存在绑定错误