【问题标题】:Does the windows server version influence the WPF?windows server 版本会影响 WPF 吗?
【发布时间】: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


【解决方案1】:

有谁知道windows和WPF屏幕之间是否确实存在冲突?

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-01
    • 2020-04-28
    • 2015-08-01
    • 2011-10-11
    • 2022-08-24
    • 2011-10-23
    • 1970-01-01
    相关资源
    最近更新 更多