Silverlight ComboBox中DataGrid绑定SelectedItem问题

发布于 12-06 22:27 字数 1039 浏览 1 评论 0原文

我在数据网格中有一个组合框。我使用 Silverlight 4.0 和 MVVM。 我的代码工作正常,除非当我从数据网格中删除一条记录并添加另一条记录时,添加行中组合框的 SelectedValue 绑定不起作用。

 <sdk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Items, Mode=TwoWay}" Name="dataGrid2" >
        <sdk:DataGrid.Columns>                
            <sdk:DataGridTemplateColumn Width="50*">
                <sdk:DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding  Path=Products, Mode=OneWay}"    
                                  SelectedValue="{Binding Path=ProductId,Mode=TwoWay}"
                                  DisplayMemberPath="ProductTitle" 
                                  SelectedValuePath="ProductId"/>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellEditingTemplate>
            </sdk:DataGridTemplateColumn>
        </sdk:DataGrid.Columns>          
    </sdk:DataGrid>

谢谢

I have a combobox in datagrid.I use Silverlight 4.0 and MVVM.
My code works fine,unless when I removed a record from datagrid and add another one, the SelectedValue binding for combobox in added row doesnt work.

 <sdk:DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Items, Mode=TwoWay}" Name="dataGrid2" >
        <sdk:DataGrid.Columns>                
            <sdk:DataGridTemplateColumn Width="50*">
                <sdk:DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding  Path=Products, Mode=OneWay}"    
                                  SelectedValue="{Binding Path=ProductId,Mode=TwoWay}"
                                  DisplayMemberPath="ProductTitle" 
                                  SelectedValuePath="ProductId"/>
                    </DataTemplate>
                </sdk:DataGridTemplateColumn.CellEditingTemplate>
            </sdk:DataGridTemplateColumn>
        </sdk:DataGrid.Columns>          
    </sdk:DataGrid>

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦明2024-12-13 22:27:22

在某个网站上找到了这段代码,它在类似的情况下帮助了我:

public class ComboBoxEx : ComboBox
{
    protected override void OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        var bindingExpression = GetBindingExpression(SelectedValueProperty);

        base.OnItemsChanged(e);

        if (bindingExpression != null)
        {
            var binding = bindingExpression.ParentBinding;
            SetBinding(SelectedValueProperty, bindingExpression.ParentBinding);
        }
    }
}

Found this piece of code on some site, it helped me in a similar Situation:

public class ComboBoxEx : ComboBox
{
    protected override void OnItemsChanged(System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        var bindingExpression = GetBindingExpression(SelectedValueProperty);

        base.OnItemsChanged(e);

        if (bindingExpression != null)
        {
            var binding = bindingExpression.ParentBinding;
            SetBinding(SelectedValueProperty, bindingExpression.ParentBinding);
        }
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文