windows 服务器版本是否影响 WPF?

Does the windows server version influence the WPF?

我使用一个包含数据的列表视图,每一行都有来自我的数据库的信息,以及复选框,所有这些都在 mvvm 中。 到目前为止一切都运行良好,但现在我遇到了问题。如果一切都适用于所有客户,我有两个人的屏幕有问题。

在这种情况下,我有一个突出显示的行,如果我选中它,没问题,我的复选框将被选中。

另一方面,在这种情况下,我无法检查组合框,我实际上什么也做不了。

我可以通过 "select all" 检查,但我无法在我的 listView 中检查任何框。只有 "nothing" 正在进行。我看到了复选框,但无法与之交互。我可以 select 该行本身。我也可以使用日期选择器。

我的印象是问题出在 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 年的服务器。我不知道为什么,但是通过删除这三行,一切都完美无缺。

Does anyone know if indeed there can be a conflict between windows and a WPF screen?

差异取决于 安装的 版本的 .NET Framework 和 Windows 中的默认控件模板。 Windows 8 及更高版本中的模板使控件看起来与 Windows 7 及更早版本中的模板不同。

此外,自 .NET Framework 4.0 以来的所有 .NET Framework 版本都是就地更新,这意味着您只能在一台计算机上安装其中一个,并且在安装新版本时会替换框架程序集。这可能会导致您的应用程序出现不同的行为,即使您在构建时目标相同的版本。

迁移到 .NET Core 解决了程序集冲突。