gpt4 book ai didi

wpf - 使用 wpf datagridcomboboxcolumn 的 IsSynchronizedWithCurrentItem

转载 作者:行者123 更新时间:2023-11-30 23:54:17 24 4
gpt4 key购买 nike

(请参阅下面的我自己的答案,这是我在让它渗透数天后想出的)
我正在尝试在 WPF 中实现以下场景。

我有一个数据网格,它显示数据行以供查看和附加数据输入。这是一个新的应用程序,但有遗留数据。

过去的一个特定领域曾将数据随机输入其中。现在我们想将该字段的值限制为特定列表。所以我使用的是 DataGridComboBoxColumn。 FWIW 我也尝试过使用包含 ComboBox 的 DataGridTemplateColumn。

在运行时,如果现有值不在列表中,我希望它无论如何都显示。我似乎无法做到这一点。虽然我尝试了大量解决方案(所有失败),但这里是最合乎逻辑的起点。

下拉列表的值在名为“months”的 Windows 资源中定义。

<DataGridComboBoxColumn x:Name="frequencyCombo"   MinWidth="100" Header="Frequency"
ItemsSource="{Binding Source={StaticResource months}}"
SelectedValueBinding="{Binding Path=Frequency,UpdateSourceTrigger=PropertyChanged}">
<DataGridComboBoxColumn.ElementStyle>
<Style TargetType="ComboBox">
<Setter Property="IsSynchronizedWithCurrentItem" Value="False" />
</Style>
</DataGridComboBoxColumn.ElementStyle>
</DataGridComboBoxColumn>

发生的情况是,如果某个值不在列表中,则显示为空白。我已经在运行时验证 IsSynchronizedWithCurrentItem 元素确实是 False。它只是没有做我所期望的。

也许我只是在这里走错了路。也许我需要将文本框与组合框结合使用。也许我需要编写一些代码,而不仅仅是 XAML。我花了几个小时尝试不同的事情,并且非常感谢解决方案。我有一些使用这个类或那个控件的建议,但没有解释如何使用它。

谢谢一堆!

最佳答案

我终于解决了这个问题。
诀窍是摆脱组合框列并使用具有用于显示的文本框和用于编辑的组合框的模板。但是,我仍然花了几个小时来解决一个新问题......在组合框中进行选择时,它会修改我在网格中也使用了组合框的任何其他行。猜猜是什么解决了问题!我之前尝试使用的 IsSynchronizedWithCurrentItem 属性。 :)

 <DataGridTemplateColumn x:Name="frequencyCombo" Header="Frequency">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=Frequency}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox
ItemsSource="{Binding Source={StaticResource frequencyViewSource},
TargetNullValue=''}"
SelectedItem="{Binding Path=Frequency}" IsSynchronizedWithCurrentItem="False"
/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

没有丑陋的黑客。下拉菜单底部没有不可用的选项。没有代码来添加这些额外的值然后清理它们。

我不会取消对 Mark 建议的“答案”,因为它使我能够将应用程序交到我的客户手中,但这是我正在寻找的解决方案。经过数小时的网络搜索,我发现它被埋在“ connect”项目中。

感谢大家的帮助!

关于wpf - 使用 wpf datagridcomboboxcolumn 的 IsSynchronizedWithCurrentItem,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4700346/

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