WinAppSDK datagrid复选框有一个bug,或者至少是一个设计问题。它需要多次点击才能选中,而且感觉很不稳定。作为一种用户体验,这是不可接受的,所以我被要求找到一个解决方案,我在这里找到了:https://social.msdn.microsoft.com/Forums/en-US/4b96bee6-dc19-4622-9de7-93ad0dbb6df1/want-to-reduce-number-of-clicks-require-to-check-microsoftwindowsdatagridcheckboxcolumn?forum=wpf
问题是,复选框看起来根本没有绑定。下面的数据网格有两列,第一列使用复选框解决方案,允许可接受的UI体验,第二列使用标准复选框列。第一列没有正确绑定(该行的ViewModel.TestSource.Selected
没有更改),而第二列绑定正确。
我在装订第一列时遗漏了什么?
注意--该示例没有在列中设置UpdateSourceTrigger
,但这似乎没有任何作用,因为它是为datagrid设置的。
<controls:DataGrid
x:Name="TestDatagrud"
Margin="12"
GridLinesVisibility="All"
HorizontalGridLinesBrush="PowderBlue"
VerticalGridLinesBrush="PowderBlue"
BorderBrush="PowderBlue"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
AutoGenerateColumns="False"
ItemsSource="{x:Bind ViewModel.TestSource, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<controls:DataGrid.Columns>
<controls:DataGridTemplateColumn Header="Test 01">
<controls:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox
HorizontalAlignment="Center"
IsChecked="{Binding Selected}"/>
</DataTemplate>
</controls:DataGridTemplateColumn.CellTemplate>
</controls:DataGridTemplateColumn>
<controls:DataGridCheckBoxColumn
IsReadOnly="False"
Header="Test 02"
Width="75"
Binding="{Binding Selected}" />
</controls:DataGrid.Columns>
</controls:DataGrid>
1条答案
按热度按时间bsxbgnwa1#
如果要将更改应用回源代码(在本例中为ViewModel.TestSource.Selected),则需要使用
TwoWay
模式。我还要提一下,您可以在这里使用
x:Bind
。