如何将WPF组合框选定项绑定到标签?标签和组合框都是数据网格列

时间:2013-12-20 00:59:32

标签: c# .net wpf silverlight datagrid

我希望将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>

1 个答案:

答案 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");
        } 
}

显然你需要设置集合,但这是主题......

提示:检查调试输出窗口是否存在绑定错误