小编Pet*_*oll的帖子

从ListBox中删除所选项目时删除选择

我有一个ListBox是有它ItemsSource绑定到(正确)实现了一个自定义类INotifyCollectionChangedSelectedItem绑定到一个ViewModel的字段.

问题是,当我SelectedItemItemsSource集合中删除当前时,它会立即将选择更改为相邻项.如果它只是删除了选择,我非常希望.

这对我来说是个问题的原因如下.的ItemsSource类包含从其他收集元件,要么满足一些(运行时恒定期间)谓词或是Active.存在Active与存在"同步" SelectedItem(有原因).因此,ListBox只有当它被选中时才允许一个项目被允许,这意味着当用户选择其他项目时它可能会消失.

我的函数(深入"模型")在SelectedItem被改变时被调用:

//Gets old Active item
var oldActiveSchema = Schemas.FirstOrDefault(sch => sch.IsActive);

//Makes the new Item active (which triggers adding it into `ItemsSource` in case it didn't satisfy the Predicate)
((PowerSchema)newActiveSchema).IsActive = true;
//Triggers PropertyChanged on ViewModel with the new Active item
CurrentSchema = newActiveSchema;
RaisePropertyChangedEvent(nameof(CurrentSchema)); (#1)

//Changes the old item so it stops …
Run Code Online (Sandbox Code Playgroud)

wpf

7
推荐指数
1
解决办法
713
查看次数

如何在bash脚本中实现对基于文件的队列的多线程访问

我设计一个通过网站进行多处理的bash脚本,跟踪找到的链接并在每个新页面上进行一些处理(它实际上收集了电子邮件地址,但这对问题来说是一个不重要的细节)时遇到了一些问题.

该脚本应该像这样工作:

  1. 下载页面
  2. 解析所有链接并将它们添加到队列中
  3. 做一些不重要的处理
  4. 从队列中弹出URL并从中开始

编程本身很简单,问题来自两个限制和脚本需要的功能.

  • 该脚本不得处理两次URL
  • 该脚本必须能够一次处理n(作为参数提供)页面
  • 该脚本必须是POSIX complient(curl除外) - >所以没有花哨的锁

现在,我设法提出了一个实现,它为队列使用两个文件,其中一个存储已经处理过的所有URL,以及其他一个已找到但尚未处理的URL.

主要过程简单地产生了一堆子进程,它们共享队列文件并且(在循环中直到URL被处理队列为空)弹出顶部URL URLs-to-be-processed-queue,处理页面,尝试添加每个新发现的链接到URLs-already-processed-queue,如果成功(URL尚未存在),也将其添加到URLs-to-be-processed-queue.

问题在于你不能(AFAIK)使队列文件操作成为原子,因此锁定是必要的.锁定POSIX兼容的方式是......恐怖......慢恐怖.

我这样做的方式如下:

#Pops first element from a file ($1) and prints it to stdout; if file emepty print out empty return 1
fuPop(){
if [ -s "$1" ]; then
        sed -nr '1p' "$1"
        sed -ir '1d' "$1"
        return 0
else
        return 1
fi
}

#Appends line ($1) to a file ($2) and return 0 if it's not in it …
Run Code Online (Sandbox Code Playgroud)

bash multithreading posix locks

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

将 .svg 导出为 .png,不使用(任何)抗锯齿(`+antialias` 不起作用)

我正在尝试将svg 文件导出为图标大小的 .png。问题是我似乎无法强制 ImageMagick 不使用抗锯齿功能。

在我看来,这+antialias只会关闭颜色之间的混叠,但不会阻止 alpha 通道混叠。

我试过了:

  • convert +antialias -background none plug.svg -resize 32x32 plug.png
  • convert +antialias -background none -size 32x32 plug.svg -resize 32x32 plug.png
  • +antialias关键字放在子句中的任意位置...

他们都生产:

在此输入图像描述


Imagemagics 版本: 版本:ImageMagick 6.7.7-10 2017-02-22

imagemagick imagemagick-convert

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

无法修改存储在另一个属性中的结构的属性

我有一点问题,我无法修改存储在另一个属性中的结构属性,我不明白为什么:

码:

    public struct InfoProTile
    {
        public string Nazev { get; set; }
        public double Hodnota { get; set; }
        public TypValue TypValue { get; set; }
        public NavigovatNa NavigovatNa { get; set; }
    }

        public InfoProTile BNDTileInfo { get { return bndTileInfo; } set { bndTileInfo = value; } } private InfoProTile bndTileInfo;

        LoadModel()
    {
        ...
        BNDTileInfo = new InfoProTile();
        BNDTileInfo.NavigovatNa = NavigovatNa.MainPage;
    }
Run Code Online (Sandbox Code Playgroud)

错误:

Error: Error 3 Cannot modify the return value of '...ViewModel.TilesModel.BNDTileInfo' because it is not …
Run Code Online (Sandbox Code Playgroud)

.net c#

3
推荐指数
2
解决办法
123
查看次数

默认移动分配调用析构函数,复制分配不

我正在观察关于析构函数以及(默认)复制和移动分配我不太了解的奇怪行为。

假设我有一个B具有默认所有内容的类Test,以及一个具有自定义析构函数,默认副本分配和(可能)默认移动分配的类。

然后,我们创建的实例B,将其分配给变量,然后使用赋值(其中右侧为rvalue)替换为新实例。

两件事对我来说似乎很奇怪,我在文档中看不到它们的原因。

  1. 如果Test没有move assignment(因此它的拷贝赋值被称为)的析构函数T1对象不明确地调用。我认为在这种情况下,惯常做法是将资源清理为的一部分copy assignment。但是,为什么在move assignment那里(被叫)时却有所不同呢?如果存在,则Test析构函数被显式调用(由运算符?)。
  2. 该文档指定other移动后分配可以保留为任何状态。=B("T2")如果B的成员没有T2的时间右值的析构函数(即的右侧),怎么不调用move assignment呢?

游乐场代码:https : //onlinegdb.com/S1lCYmkKOV

#include <iostream>
#include <string>

class Test
{
public:
    std::string _name;

    Test(std::string name) : _name(name) { }
    ~Test()
    {
        std::cout << "Destructor " << _name << std::endl;
    }
    Test& operator=(const Test& fellow) = default;
    //Test & operator= ( Test && ) = default; …
Run Code Online (Sandbox Code Playgroud)

c++ move

0
推荐指数
1
解决办法
98
查看次数

标签 统计

.net ×1

bash ×1

c# ×1

c++ ×1

imagemagick ×1

imagemagick-convert ×1

locks ×1

move ×1

multithreading ×1

posix ×1

wpf ×1