gpt4 book ai didi

wpf - DataGridTemplateColumn 两种方式绑定(bind)不起作用

转载 作者:行者123 更新时间:2023-12-04 12:38:15 25 4
gpt4 key购买 nike

我有一个 DataGrid我已绑定(bind)到 SqlDataApter .如果我使用 DataTextColumn 为网格设置 XAML如下面的代码所示,它完美地工作

<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left" Margin="27,42,0,0"
Name="dataGrid1" VerticalAlignment="Top" AreRowDetailsFrozen="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding KEY}" Visibility="Hidden"
IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding CHARACTERISTIC_CODE}"
Header="Unit" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding UNIT_CHAR}"
Header="Unit" IsReadOnly="True" />
<DataGridTextColumn Binding="{Binding IC_DEF_CHAR_NUMERIC}"
Header="Number" IsReadOnly="False"/>
<DataGridTextColumn Binding="{Binding IC_DEF_CHAR_TEXT}"
Header="Text" IsReadOnly="False" />
<DataGridTextColumn Binding="{Binding IsNumeric}"
Header="Status" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding IsText}"
Header="Status" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
我将其绑定(bind)到 DataTable在代码中使用:
dataGrid1.ItemsSource = dTable.DefaultView
我有一个使用 ذSqlDataAdapterذ 更新方法保存更改的按钮:
dAdapter.Update(dTable)
问题是我想禁用编辑 IC_DEF_CHAR_TEXT字段当记录 isNumeri c 和 IC_DEF_CHAR_TEXT当记录 IsText .我尝试绑定(bind)到 IsReadOnly属性,但发现它不可绑定(bind),所以我为这两个字段创建了模板并绑定(bind)了 IsEnabled IsText 的属性(property)和 IsNumeric字段。
<DataGrid AutoGenerateColumns="False" HorizontalAlignment="Left"
Margin="27,42,0,0" Name="dataGrid1" VerticalAlignment="Top"
AreRowDetailsFrozen="True">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding KEY}" Visibility="Hidden"
IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding CHARACTERISTIC_CODE}"
Header="Unit" IsReadOnly="True"/>
<DataGridTextColumn Binding="{Binding UNIT_CHAR}"
Header="Unit" IsReadOnly="True"/>
<DataGridTemplateColumn Header="Numeric">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=IC_DEF_CHAR_NUMERIC,
Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox IsReadOnly="False"
Text="{Binding Path=IC_DEF_CHAR_NUMERIC,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="Text" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=IC_DEF_CHAR_TEXT,
Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<TextBox Text="{Binding Path=IC_DEF_CHAR_TEXT,
Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
这完全符合我的要求,必要时启用了文本框。但是 TextBoxes 中所做的更改在更新期间不再保存到数据库中。有人可以向我解释为什么不再更新数据库吗?

最佳答案

我有同样的问题,没有更新源:

<DataGridTemplateColumn Header="Obs" IsReadOnly="False">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBox Name="txtObs" Width="80"
Text="{Binding Path=ObsPedido, Mode=TwoWay}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
对我来说,只需添加 UpdateSourceTrigger=PropertyChanged
<TextBox Name="txtObs" Width="80"
Text="{Binding Path=ObsPedido, Mode=TwoWay,
UpdateSourceTrigger=PropertyChanged}"/>

关于wpf - DataGridTemplateColumn 两种方式绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18216745/

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