【发布时间】:2020-09-20 15:25:26
【问题描述】:
我使用一个包含数据的列表视图,每一行都有来自我的数据库的信息以及复选框,所有这些都在 mvvm 中。 到目前为止,一切都运行良好,但现在我遇到了问题。如果一切都适用于所有客户,我有两个屏幕有问题。
在这种情况下,我有一个突出显示的行,如果我选中它,没问题,我的复选框将被选中。
另一方面,在这种情况下,我无法检查组合框,我真的什么也做不了。
我可以通过“全选”进行检查,但无法选中列表视图中的任何框。只是“没有”发生。我看到了复选框,但我无法与之交互。我可以选择线路本身。我也可以使用日期选择器。
我的印象是问题出在 windows 的版本上,因为唯一不工作的是 Windows 2008 R2 服务器。
我可以显示我的 WPF 代码,但它适用于其他所有人,包括我的电脑 (Windows 10)。
WPF:
<TabControl Grid.Row="2">
<TabItem Header="Lignes">
<ListView ItemsSource="{Binding LignesTransfert}"
AllowDrop="True"
cuil:DragDropExtension.ScrollOnDragDrop="True">
<ListView.ItemContainerStyle>
<Style TargetType="ListViewItem">
<EventSetter Event="ListViewItem.DragOver" Handler="ListViewItemDragOver"/>
<EventSetter Event="ListViewItem.Drop" Handler="ListViewItemDrop"/>
<EventSetter Event="ListViewItem.PreviewMouseMove" Handler="ListViewItemPreviewMouseMove"/>
<Setter Property="Background" >
<Setter.Value>
<Binding Path="BackColor" />
</Setter.Value>
</Setter>
<Setter Property="BorderThickness" Value="0"/>
<Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="0"/>
</Style>
</ListView.ItemContainerStyle>
<ListView.View>
<GridView>
<GridViewColumn Width="300"
Header="Libellé">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding StLibelle}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="300"
Header="Description">
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding StDescription}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="80" >
<GridViewColumnHeader>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding TousEnJours}" />
<TextBlock Text="En Jours"
Margin="4,0"/>
</StackPanel>
</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding BoolEnJours}"
Visibility="{Binding EnableEnJours, Converter={StaticResource BoolToVis}, FallbackValue=Visible}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="80">
<GridViewColumnHeader>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding TousEnHeures}" />
<TextBlock Text="En Heures"
Margin="4,0" />
</StackPanel>
</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding BoolEnHeures}"
Visibility="{Binding EnableEnHeures, Converter={StaticResource BoolToVis}, FallbackValue=Visible}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="80" >
<GridViewColumnHeader>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding TousEnNombre}" />
<TextBlock Text="En Nombre"
Margin="4,0"/>
</StackPanel>
</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding BoolEnNombre}"
Visibility="{Binding EnableEnNombre, Converter={StaticResource BoolToVis}, FallbackValue=Visible}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="80">
<GridViewColumnHeader>
<StackPanel Orientation="Horizontal">
<CheckBox IsChecked="{Binding TousEnDates}" />
<TextBlock Text="En Dates"
Margin="4,0" />
</StackPanel>
</GridViewColumnHeader>
<GridViewColumn.CellTemplate>
<DataTemplate>
<CheckBox IsChecked="{Binding BoolEnDates}"
Visibility="{Binding EnableEnDates, Converter={StaticResource BoolToVis}, FallbackValue=Visibl}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="120"
Header="Début">
<GridViewColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding DtDebut}"
FontSize="10"
Height="16"
BorderThickness="0"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
<GridViewColumn Width="120"
Header="Fin">
<GridViewColumn.CellTemplate>
<DataTemplate>
<DatePicker SelectedDate="{Binding DtFin}"
FontSize="10"
Height="16"
BorderThickness="0"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</TabItem>
<TabItem Header="Colonnes">
<ListView ItemsSource="{Binding ColonnesTransfert}">
<ListView.View>
<GridView>
<GridViewColumn>
<GridViewColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding StLibelle}"/>
</DataTemplate>
</GridViewColumn.CellTemplate>
</GridViewColumn>
</GridView>
</ListView.View>
</ListView>
</TabItem>
</TabControl>
有谁知道 Windows 和 WPF 屏幕之间是否确实存在冲突?
因为我的想法已经不多了。感谢您的反馈。
解决方案编辑:
<EventSetter Event="ListViewItem.DragOver" Handler="ListViewItemDragOver"/>
<EventSetter Event="ListViewItem.Drop" Handler="ListViewItemDrop"/>
<EventSetter Event="ListViewItem.PreviewMouseMove" Handler="ListViewItemPreviewMouseMove"/>
我有,我在此提供信息,以防万一发生在其他人身上。 带有“EventSetters”的部分是一个问题(它允许将行拖放到数据网格中)。 它适用于所有服务器,但不适用于 2008 年的服务器。我不知道为什么,但是通过删除这三行,一切正常。
【问题讨论】:
-
这能回答你的问题吗? WPF styling on Windows Server 2008 R2
-
我试过了,我恢复了动画(例如突出显示),但复选框仍然不起作用,仅在 2008 R-2 的这两个服务器上
-
尝试将问题定位为一个非常简短的可重现示例,请参阅minimal reproducible example。
-
我知道了,谢谢你的建议。我将编辑我的原始帖子。感谢您的帮助。
标签: c# wpf mvvm windows-server-2008