小编Sis*_*phe的帖子

分页后分割的TableCell:余数分割部分丢失原始单元格属性

TableCell关于WPF 的分裂策略,我有一个问题FlowDocument Table.

这是一个允许重现问题的简单代码:

MainWindow.xaml.cs

/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        var table = new Table() { BorderThickness = new Thickness(1), BorderBrush = Brushes.Black, CellSpacing = 0 };
        var rowGroup = new TableRowGroup();
        var tableRow = new TableRow();
        var cell1 = new TableCell() { Background = Brushes.Red, BorderThickness = new Thickness(0, 0, 1, 0), BorderBrush = Brushes.Black };
        var cell2 = new TableCell() …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf flowdocument

11
推荐指数
1
解决办法
1355
查看次数

WPF TreeView泄漏所选项目

我目前在WPF TreeView上有一个奇怪的内存泄漏.当我在TreeView中选择一个项目时,相应的绑定ViewModel强烈保存在TreeView EffectiveValueEntry []集合中.问题是,当ViewModel从其父集合中删除时,它不会被释放.

这是一个重现问题的简单代码:

MainWindow.xaml

using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Controls.Primitives;

namespace TreeViewMemoryLeak
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            DataContext = this;
        }

        public ObservableCollection<Entry> Entries
        {
            get
            {
                if (entries == null)
                {
                    entries = new ObservableCollection<Entry>() { new Entry() { DisplayName = "First Entry" } };
                }
                return entries;
            }
        }

        private void Button_Click(object sender, RoutedEventArgs e) { entries.Clear(); }

        private ObservableCollection<Entry> entries;

    }

    public class Entry : DependencyObject
    {
        public …
Run Code Online (Sandbox Code Playgroud)

.net c# memory wpf memory-leaks

10
推荐指数
1
解决办法
2992
查看次数

将 mDNS 查询从 WSL 子网重新路由到 Windows 主机子网

Heya 编码员/开发人员/网络人员/Devops/...

我在 WSL2(Windows 10 2004 版本)上下文中遇到mDNS/DNS-SD设置问题

我在家里有一个非常简单的设置,有一个主服务器和一个 Raspberry Pi,我想激活 DNS 服务发现,从而让我有一种简单的方法在我的 Raspberry PI 上自动发现我的服务器。

使用像dnssd这样的简单库,甚至自己广播正确的数据,我设法在不使用 WSL2 时使其轻松工作。但是我有一个要求让它在 WSL2 上工作,这就是事情变得复杂的地方。

由于 WSL2 在其自己的子网上运行,因此广播不再起作用。在子网上使用 mDNS 仅适用于该子网。然而,Windows 已经重新路由了主机和 WSL 之间的一些广播流量。

这很容易测试:Ping从我的服务器到依赖 mDNS 的 Pi 的 Avahi 地址做一个简单的工作。

在此处输入图片说明

在屏幕左侧,您可以看到 Wireshark 在主机网络接口上捕获的流量,在右侧,您可以看到 Wireshark 在 WSL 网络接口上捕获的流量。前3行是一个简单的ping:它是在WSL的上下文中执行的,但是这里出现的IP地址172.28.192.1——不是WSL客户端的IP地址,而是WSL内部DNS服务器的IP地址。正如您在右侧看到的那样,它在主机上完美地重新路由,带有 Windows 主机的 IP 地址:192.168.0.39

但是,由脚本执行的第二个查询具有 WSL 源 IP ( 172.28.204.42),并且该查询不会在主机上重新路由。

我的网络知识非常有限,我不明白这是如何工作的,以及如何让 WSL 在主机上路由我自己的 mDNS 查询。一个疯狂的猜测是它与 iptables 有关,但就我而言。

如果有人知道为什么它适用于 DNS 服务器源地址而不是当我自己执行它时,这将对我有很大帮助!

编辑 1:WSL 路由表 在此处输入图片说明

routes mdns subnet dns-sd windows-subsystem-for-linux

6
推荐指数
1
解决办法
1266
查看次数

比较两个IEnumerable以检测更改

对于我在这里的第一篇文章,我有一个关于IEnumerable比较的问题.我有一个基于枚举逻辑的可绑定结构.IEnumerable的内容随着时间的推移而变化,我必须手动触发CollectionChanged事件.

我有一个非常天真的算法,允许我检测IEnumerable的两个状态之间的简单更改(简单添加,简单删除,多次添加,多次删除),但它不是非常有效,并且不会检测到所有内容.

我需要的一个简单示例:

IEnumerable的状态1: A*B*C*D*E.

IEnumerable的状态2: A*C*B*D*D1

对于这个例子,我必须检测

  • 一次移动操作:B将指数从1改为2
  • 一个添加操作:D1插入索引4
  • 一个删除操作:E被删除

有没有算法尽可能有效地解决这个问题(O(nLog(n))会是一个好的开始)?

谢谢 !

.net c# algorithm comparison ienumerable

5
推荐指数
1
解决办法
1349
查看次数