小编M.E*_*.E.的帖子

上下文菜单,用于删除listview中的项目

我有一个ListView,它显示一个字符串值列表.我想为列表中的每个项目添加上下文菜单条目以删除所选项目.我的XAML看起来像这样:

<ListView x:Name="itemsListView" ItemsSource="{Binding MyItems}">
  <ListView.ContextMenu>
    <ContextMenu>
      <MenuItem Header="Remove"
                Command="{Binding RemoveItem}"
                CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}" />
    </ContextMenu>
  </ListView.ContextMenu>
</ListView>
Run Code Online (Sandbox Code Playgroud)

问题是该CommandParameter值始终为null.我添加了一个额外的按钮来删除所选项目以检查我的命令是否有效.该按钮具有完全相同的绑定,并通过按钮删除项目工作.按钮看起来像这样:

<Button Content="Remove selected item"
        Command="{Binding RemoveItem}"
        CommandParameter="{Binding ElementName=itemsListView, Path=SelectedItem}"/>
Run Code Online (Sandbox Code Playgroud)

该命令如下所示:

private ICommand _removeItem;

public ICommand RemoveItem
{
  get { return _removeItem ?? (_removeItem = new RelayCommand(p => RemoveItemCommand((string)p))); }
}

private void RemoveItemCommand(string item)
{
  if(!string.IsNullOrEmpty(item))
    MyItems.Remove(item);  

}
Run Code Online (Sandbox Code Playgroud)

打开上下文菜单时所选项目为空的任何想法?也许是listview的焦点问题?

wpf listview contextmenu

12
推荐指数
1
解决办法
2万
查看次数

SignalR 长轮询重复调用 /negotiate 和 /hub POST,并偶尔在 Azure Web App 上返回 404

我们已在 Azure Web 应用程序(Windows 应用服务计划)上运行的 ASP.NET Core 5.0 Web 项目上启用了 SignalR。我们的 SignalR 客户端是使用 NPM 包(版本 5.0.11)的 Angular 客户端@microsoft/signalr

我们的枢纽位于/api/hub/notification

对于大多数客户端来说,一切都按预期进行,Web 套接字连接已建立,我们可以从客户端调用到服务器的方法,反之亦然。

对于我们的一些客户,我们看到在短时间内收到大量请求(每个客户端每分钟多个请求)POST /api/hub/notification/negotiatePOST /api/hub/notification自从我们看到请求以来,这些客户端似乎切换到长轮询而不是使用 Web 套接字POST /api/hub/notification

我们怀疑受影响的客户端可能位于代理或防火墙后面,这些代理或防火墙禁止 Web 套接字,因此连接首先切换为长轮询。

以下屏幕截图显示了单个用户在短时间内向集线器端点发出的请求。该列表很长,因为只要用户打开我们的网站,这种模式就会重复。我们看到两个奇怪的事情:

  1. 客户端/negotiate每 15 秒重复调用两次。
  2. 对 的调用POST /notification?id=<connectionId>恰好需要 15 秒,并且具有相同连接 ID 的后续调用将返回 404 响应。然后该模式重复并/negotiate再次被调用。

要求

出于测试目的,我们仅在客户端中启用长轮询。这也符合我们的预期。不幸的是,我们目前无法访问发生此行为的用户的浏览器或网络,因此我们很难重现该问题。

更多注意事项:

  1. 目前,我们只有一个正在运行的 Web 应用程序实例。
  2. 我们将Redis背板用于未来的横向扩展场景。
  3. ARR 关联 cookie 已启用,并且 Azure Web 应用程序中的 Web 套接字也已启用。
  4. Web App 实例不会遭受高 CPU 使用率或高内存使用率的影响。
  5. 除了添加 …

azure long-polling asp.net-core-signalr

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

ShouldSerialize模式和DataContractSerializer

有没有办法让ShouldSerialize*模式合作DataContractSerializer

这是一个小例子:

我有一个简单的类Person,看起来像这样:

[DataContract]
public class Person
{
  [DataMember]
  public string FirstName { get; set; }
  public bool ShouldSerializeFirstName()
  {
    return !string.IsNullOrEmpty(FirstName);
  }

  [DataMember]
  public string LastName { get; set; }
  public bool ShouldSerializeLastName()
  {
    return !string.IsNullOrEmpty(LastName);
  }

  public Person(string firstName, string lastName)
  {
    FirstName = firstName;
    LastName = lastName;
  }
  public Person(string firstName)
  {
    FirstName = firstName;
  }
  public Person()
  {
  }
}
Run Code Online (Sandbox Code Playgroud)

FirstName或者LastName只有在它们不为空或空时才应序列化.这适用XmlSerializerDataContractSerializer似乎忽略了ShouldSerialize模式.该 …

c# datacontractserializer

4
推荐指数
1
解决办法
4720
查看次数