【发布时间】:2021-03-29 20:30:17
【问题描述】:
我有一个DataGrid,其中包含Transactions。我有一个InterestOrDividend 列,我可以在其中使用ComboBox 选择一个值。这很好用。
一个新功能是输入一个值并将其添加到可能性列表中。我将IsEditable 设置为true 并从http://schemas.microsoft.com/expression/2010/interactivity 添加Interaction.Triggers
问题 1:
似乎InterestOrDividendSelectionChangedCommand 不仅会在选择更改时触发,而且还会在我滚动 DataGrid 并且这些行进入视图时触发,这些行在InterestOrDividend 列中具有非空值。此外,当输入一个新值(不在列表中)时,该事件不会触发。
问题 2:
我想绑定ComboBox的Text属性来获取新增的值。似乎在 Text 属性更改之前事件触发了,所以我得到了旧值。
<DataGridTemplateColumn Header="{x:Static r:Resource.InterestOrDividend}"
CellTemplate="{StaticResource InterestOrDividendEditingTemplate}"
CellEditingTemplate="{StaticResource InterestOrDividendEditingTemplate}" />
<DataTemplate x:Key="InterestOrDividendEditingTemplate">
<ComboBox ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGrid}}, Path=DataContext.AppData.AlienTypeObjects}"
SelectedItem="{Binding InterestOrDividend}"
DisplayMemberPath="FullName"
IsEditable="True"
<i:Interaction.Triggers>
<i:EventTrigger EventName="SelectionChanged">
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type DataGrid}},
Path=DataContext.InterestOrDividendSelectionChangedCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ComboBox}}, Path=Text}"
/>
</i:EventTrigger>
</i:Interaction.Triggers>
</ComboBox>
</DataTemplate>
【问题讨论】:
标签: c# mvvm combobox binding expression-blend