gpt4 book ai didi

wpf - 当我离开它时,为什么我的 DataGridComboBoxColumn 会清除它的值?

转载 作者:行者123 更新时间:2023-12-05 00:31:34 27 4
gpt4 key购买 nike

我有一个包含两列的 DataGrid:

  • DataGridComboBoxColumn
  • 数据网格文本列。

  • 我已经设置了数据验证,这样如果一个有值,另一个就会出错,直到它也有一个值。验证很愚蠢,但它提供了一些用于验证的简单标准,因此我可以说明这个问题。

    当我在文本单元格中输入内容时,按 Tab,然后单击第一个单元格,第一个单元格显示它处于错误状态(这是正确的)。问题是,当我从组合框下拉列表中选择某些内容并离开该单元格时(通过按 Tab 或单击另一个单元格),我为组合框选择的值消失了。每当属性更改时,我都会设置绑定(bind)来更新我的源,因此一旦我选择它,它就会设置为我选择的值。但是,当我离开单元格时,该属性被设置为 null。如果单元格未处于错误状态,我看不到此行为。

    有人可以帮忙吗?这是我的 DataGrid 的 XAML:
            <DataGrid Grid.Row="2"
    Name="GrdData"
    ItemsSource="{Binding Path=Dvm.Data}"
    SelectedItem="{Binding Path=Dvm.SelectedData, Mode=TwoWay}"
    CanUserAddRows="True"
    CanUserDeleteRows="False"
    AutoGenerateColumns="False"
    Margin="5"
    SelectionMode="Single"
    IsEnabled="{Binding Path=IsGridEnabled}">
    <DataGrid.Columns>
    <DataGridComboBoxColumn Header="Column 1"
    SelectedItemBinding="{Binding Path=Col1, Mode=TwoWay, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged}"
    Width="*"
    DisplayMemberPath="Description">
    <DataGridComboBoxColumn.ElementStyle>
    <Style TargetType="ComboBox">
    <Setter Property="ItemsSource" Value="{Binding Path=DropDownValues, Mode=OneWay}" />
    <Setter Property="IsSynchronizedWithCurrentItem" Value="False"/>
    </Style>
    </DataGridComboBoxColumn.ElementStyle>
    <DataGridComboBoxColumn.EditingElementStyle>
    <Style TargetType="ComboBox">
    <Setter Property="ItemsSource" Value="{Binding Path=DropDownValues, Mode=OneWay}"/>
    <Setter Property="IsDropDownOpen" Value="True" />
    </Style>
    </DataGridComboBoxColumn.EditingElementStyle>
    </DataGridComboBoxColumn>
    <DataGridTextColumn Header="Column 2"
    Binding="{Binding Path=Col2, Mode=TwoWay, ValidatesOnDataErrors=True}"
    Width="*"/>
    </DataGrid.Columns>
    </DataGrid>

    我无法想象我做错了什么。我看到了 other link这似乎描述了我遇到的同样问题,但对他们有用的解决方案似乎对我不起作用;我添加了 SelectedValueBinding 和 SelectedValuePath,但行为没有改变。

    最佳答案

    删除 Mode=TwoWay从绑定(bind)。

    该问题是由剪贴板和自动化支持中的错误引起的。这可以通过将单元格上的特殊属性设置为 ClipboardContentBinding 来实现。然后读取值。如果该绑定(bind)是双向的,则有时会将特殊属性中的旧值推回 View 模型,并且验证错误似乎会触发此行为。 DataGridBoundColumnsDataGridComboBoxColumns将提供BindingSelectedItemBinding如果 ClipboardContentBinding为空,因此如果将其中任何一个设置为 TwoWay,就会出现此错误。捆绑。

    如果不设置Mode ,它将是 Default并使用属性中的默认值,即 TwoWay对于 TextBox.TextComboBox.SelectedItem但是 OneWay对于特殊的剪贴板属性。

    关于wpf - 当我离开它时,为什么我的 DataGridComboBoxColumn 会清除它的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14504117/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com