gpt4 book ai didi

c# - 如何修复 WPF Datagrid 中的 "Two-way binding requires Path or XPath"异常?

转载 作者:行者123 更新时间:2023-12-03 03:47:46 25 4
gpt4 key购买 nike

此问题的背景/背景:我有一个 WPF 桌面应用程序。它使用 LINQ to SQL 连接到其 SQL 数据库,并在 WPF Datagrids 中显示其数据。它工作得相当好,但性能是一个问题,因为 LINQ 可能非常慢,所以我一直尽可能地将逻辑和 UI 控件从 LINQ 数据库上下文中切换出来,而是将它们加载到与以下内容非常相似的局部变量中: LINQ 对象,这极大地提高了性能。

问题:当我测试我的数据网格时,当我尝试编辑某个(整数)中的值时,我现在收到一个新的异常“双向绑定(bind)需要 Path 或 XPath。” )一个数据网格的列,尽管编辑字符串列一直工作正常。我不明白为什么我会得到这个,或者该怎么办。

因此,当 datagrid.datacontext 设置为 LINQ 实体关联时,它可以工作,但只有当它设置为普通对象列表时,它才几乎工作。我尝试将列表更改为 ObservableCollection,但这没有明显效果。

我在这里和其他网站上查看了大约十几个不同的相关问题,但没有看到任何似乎有帮助的内容。

目前我有:

<DataGrid Margin="12,110,12,0" x:Name="dgDays" ItemsSource="{Binding}" 
Height="165" VerticalAlignment="Top" MinHeight="0"
AutoGenerateColumns="False"
SelectionChanged="dgDays_SelectionChanged">

...

<DataGrid.Columns>
<DataGridComboBoxColumn Width="80" Header="Cook" x:Name="_DailyCookCombo" SelectedItemBinding="{Binding sCook}"/>
<DataGridComboBoxColumn Width="80" Header="Eat" x:Name="_DailyDayCombo" SelectedItemBinding="{Binding sDay}"/>
<DataGridTextColumn Width="52" Header="Prot" Binding="{Binding Protein}" />
<DataGridTextColumn Width="52" Header="Carb" Binding="{Binding Carb}" />
<DataGridTextColumn Width="52" Header="Fat" Binding="{Binding Fat}" />
<DataGridTextColumn Width="62" Header="Prot %" Binding="{Binding ProteinPercent}" />
<DataGridTextColumn Width="62" Header="Carb %" Binding="{Binding CarbPercent}" />
<DataGridTextColumn Width="62" Header="Fat %" Binding="{Binding FatPercent}" />
<DataGridTextColumn Width="116" Header="non PFW meals" Binding="{Binding NonPFWMeals}" />
<DataGridTextColumn Width="55" Header="Prot" Binding="{Binding CalcProt}" IsReadOnly="True" />
<DataGridTextColumn Width="55" Header="Carb" Binding="{Binding CalcCarbs}" IsReadOnly="True" />
<DataGridTextColumn Width="55" Header="Fat" Binding="{Binding CalcFat}" IsReadOnly="True" />
<DataGridTextColumn Width="65" Header="KCal" Binding="{Binding CalcKCal}" IsReadOnly="True" />
<DataGridCheckBoxColumn Width="32" Header="Skip" Binding="{Binding Skip}" />
<DataGridTextColumn Width="70" Header="Date" Binding="{Binding sNextDate}" IsReadOnly="True" />
</DataGrid.Columns>
</DataGrid>

由代码绑定(bind):

dgDays.DataContext = TheMember.RAM_Member_Requirements_Days;

定义为:

public ObservableCollection<RAM_Member_Requirements_Day> RAM_Member_Requirements_Days = new ObservableCollection<RAM_Member_Requirements_Day>();

其绑定(bind)成员是:

    public class RAM_Member_Requirements_Day : INotifyPropertyChanged
{
// RAM equivalents of DB values:
public System.Nullable<decimal> Protein;
public System.Nullable<decimal> Carb;
public System.Nullable<decimal> Fat;
public System.Nullable<decimal> ProteinPercent;
public System.Nullable<decimal> CarbPercent;
public System.Nullable<decimal> FatPercent;
public System.Nullable<int> NonPFWMeals;
public System.Nullable<bool> Skip;
public System.Nullable<System.DateTime> SkipDate;

我在输入此内容后不久就发现了一个非常简单的修复程序,当网站在 8 小时延迟后允许我发布时,我将发布该修复程序。

最佳答案

我在绑定(bind)文本框时遇到了这个问题。我的解决方案是显式绑定(bind)到“.”:

<TextBox Text="{Binding Path=.}" />

这就成功了。

关于c# - 如何修复 WPF Datagrid 中的 "Two-way binding requires Path or XPath"异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9449689/

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