【问题标题】:DataGridComboBoxColumn loses its content when selection changes选择更改时 DataGridComboBoxColumn 丢失其内容
【发布时间】:2011-03-06 02:04:24
【问题描述】:

当我单击 DataGridComboBoxColumn 中的一个单元格时,组合框变得可见,我可以选择项目。当我选择了一个项目时,它在顶部可见。但是当单元格又名 ComboBox 因为我在 DataGrid 中单击不同的东西而失去焦点时,那么我之前选择的单元格中就没有可见的项目/文本了。

如何保留该选择/选定的文本?

这是我的代码:

<DataGridComboBoxColumn
           Width="*"
           Header="Monday"
           DisplayMemberPath="SchoolclassName"
           SelectedValueBinding="{Binding SchoolclassCodeMonday}"  
           ItemsSource="{Binding Source={StaticResource ClassCodes}}">

    <DataGridComboBoxColumn.ElementStyle>
        <Style TargetType="ComboBox">
            <Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
            <Setter Property="ItemsSource" 
                    Value="{Binding Source={StaticResource ClassCodes}}" />
        </Style>
    </DataGridComboBoxColumn.ElementStyle>

    <DataGridComboBoxColumn.EditingElementStyle>                   
        <Style TargetType="ComboBox">
            <Setter Property="ItemsSource" 
                    Value="{Binding Source={StaticResource ClassCodes}}" />
            <Setter Property="IsDropDownOpen" Value="True" />
        </Style>                   
    </DataGridComboBoxColumn.EditingElementStyle>
</DataGridComboBoxColumn>

我的问题似乎有解决方案:http://wpf.codeplex.com/Thread/View.aspx?ThreadId=46627(滚动到底部)但我无法将解决方案转移到我的问题。因为我的模型设置完全不同。

SchoolclassName 是 Schoolclass.cs 中的字符串属性 SchoolclassCodeMonday 是 TimeTable.cs 中的字符串属性 ClassCodes 又名 SchoolclassCodes 是 ObservableCollection|Schoolclass|

类型的属性

有人知道如何修复我的绑定吗?

【问题讨论】:

  • @给投票 +1 DisplayMemberPath="SchoolclassName" 的人上面是现有代码:下面是我添加的,现在当我离开组合框时 SchoolclassCode 仍保留在单元格中。通常,您为 SelectedValuePath 使用 ID,但我的“ID”是已经唯一的 SchoolclassCode。 SelectedValuePath="SchoolclassName" 它对我有用...,我没有更好的解释或更多的技术内幕知识,但您可以在这里阅读对我有帮助的内容:blogs.msdn.com/b/vinsibal/archive/2008/10/31/…

标签: wpf selecteditem datagridcomboboxcolumn


【解决方案1】:

我知道它可能不再需要,但也许它会帮助其他人。 您的 ComboBox 在更改时是否不需要更新绑定?例如

SelectedValueBinding="{Binding SchoolclassCodeMonday}"

应该是:

SelectedValueBinding="{Binding SchoolclassCodeMonday, 
Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"  

还要确保当属性从可观察集合上的代码发生更改时触发通知。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多