WPF Listview 存在问题。此列表视图绑定到数据库中的数据表。这里没有 MVVM。一切都在代码隐藏中。
在此列表视图中,第 3 列具有单元格模板。并且此列绑定到 DataTable 中的税收百分比列。此税收百分比列的类型为 varchar [这是基于其他一些业务逻辑,因此无法更改数据类型]。
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBox Name="txt1" Text="{Binding taxpercent, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
PreviewTextInput="txt1_PreviewTextInput" Width="105">
<TextBox.BorderBrush>
<MultiBinding Converter="{StaticResource textComparer}">
<Binding Path="taxpercent" Mode="TwoWay" />
<Binding Path="taxpercent_val" Mode="TwoWay"/>
</MultiBinding>
</TextBox.BorderBrush>
</TextBox>
</DataTemplate>
加载列表视图时,它会填充数据库中的数据。假设列表视图中有 4 行数据。下面显示了税列。
Tax Percentage
--------------
2
1
4
3
在此之后,我编辑了税收百分比并单击 GridViewHeaderColumn 对其进行排序。它排序正确。现在排序顺序是递减的。下面是排序的代码。
ICollectionView dataView = CollectionViewSource.GetDefaultView(lvTax.ItemsSource);
if (dataView != null)
{
dataView.SortDescriptions.Clear();
SortDescription sd = new SortDescription("taxpercent", direction);
dataView.SortDescriptions.Add(sd);
dataView.Refresh();
}
第一次排序后,当我在税收百分比文本框中编辑或更改一个值时,输入第一个数字后不久,它会再次自动排序!!!表示编辑的行向下或向上取决于最后排序的方向!!!
上面的事件处理程序“txt1_PreviewTextInput”只是为了使它成为数字文本框。我评论了上面的处理程序并尝试了。但是没有用。我在 XAML 中注释了多重绑定,但没有用。
可能是什么问题呢 ???
任何想法 ??