小编has*_*ock的帖子

来自XAML的引用嵌套枚举类型

我似乎无法从XAML引用公共嵌套枚举类型.我上课了

namespace MyNamespace
{
  public class MyClass
  {
    public enum MyEnum
    {
       A,
       B,
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试MyEnum像这样在Xaml中引用:

xmlns:MyNamespace="clr-namespace:MyNamespace;assembly=MyApp"
....

{x:Type MyNamespace:MyClass:MyEnum}    // DOESN'T WORK
Run Code Online (Sandbox Code Playgroud)

但VS抱怨它无法找到公共类型MyEnum.我也尝试使用+基于这篇文章的答案之一的语法...

{x:Type MyNamespace:MyClass+MyEnum}    // DOESN'T WORK
Run Code Online (Sandbox Code Playgroud)

但这也不起作用.

请注意,x:Static 适用于+语法:

{x:Static MyNamespace:MyClass+MyEnum.A}  // WORKS
Run Code Online (Sandbox Code Playgroud)

如果我MyEnum离开,MyClass我也可以参考它.但不是如果它是嵌套的......

那我错过了什么?如何使用XAML引用嵌套枚举x:Type?(注意,我不是试图实例化任何东西,只是引用类型).

UPDATE

看起来这只是VS 2010设计师的一个错误.设计师抱怨说Type MyNamespace:MyClass+MyEnum was not found.但应用程序似乎运行并正确访问嵌套类型.我也尝试使用嵌套类,它在运行时工作.

可能的开放式错误:http://social.msdn.microsoft.com/forums/en-US/wpf/thread/12f3e120-e217-4eee-ab49-490b70031806/

相关线程:在xaml中编写嵌套类型时的设计时错误

c# xaml

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

Datagrid RowDetails 未更新

RowDetailsTemplate在修改 aDataGrid绑定到的集合(“项目”)时,我在获取更新时遇到问题。正在从视图模型中修改集合。当我修改绑定项目之一的内容时,DataGridRow 和 RowDetailsTemplate 中的更改都会更新。例如

Items[i].Name = "new name";  // RowDetailsTemplate gets updated
Run Code Online (Sandbox Code Playgroud)

但是,如果我将其中一项分配给一个全新的对象,DataGridRow 会更新,但 RowDetailsTemplate 不会更新。例如

Items[i] = new Model {Name = "new name"};  // RowDetailsTemplate NOT updated
Run Code Online (Sandbox Code Playgroud)

一开始我唯一想到的是,我需要为绑定的 Items 的 CollectionChanged 事件添加一个侦听器,并显式地引发属性更改通知。例如

Items = new ObeservableCollection<Model>();
Items.CollectionChanged += (o,e) => OnNotifyPropertyChanged("Items");
Run Code Online (Sandbox Code Playgroud)

但这没有用。

我的 XAML 绑定如下所示:

<DataGrid DataContext="{StaticResource viewmodel}" 
          ItemsSource="{Binding Items, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True, NotifyOnSourceUpdated=True}">
  <DataGrid.RowDetailsTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding Name, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, NotifyOnTargetUpdated=True, NotifyOnSourceUpdated=True}"/>
    </DataTemplate>
  </DataGrid.RowDetailsTemplate>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

为什么会DataGridRow通知已更改的 Item 而不是RowDetailsTemplate …

c# wpf xaml mvvm wpfdatagrid

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

AWS API Gateway是否支持基本授权?

是否可以通过AWS API Gateway Service使用基本身份验证而不是AWS4-HMAC-SHA256身份验证?我需要支持仅支持基本身份验证的webhook调用的系统。

http-authentication aws-api-gateway

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

选择distinct而不创建IEqualityComparer

我想使用Linq从集合中选择一组不同的元素,而不创建IEqualityComparer类.我无法弄清楚如何创建一个lambda表达式,该表达式被评估为要使用的IEqualityComparer Distinct().因此,我使用分组来选择具有不同名称的客户:

var distinctCustomers = new List<Customer>();
var groups= customers.GroupBy (cust => cust.Name);
foreach (var g in groups)
{
  foreach (var customer in g)
  {
    distinctCustomers.Add (customer);
    break;
  }
}
Run Code Online (Sandbox Code Playgroud)

但这似乎很蠢.

我要么使用Distinctlambda表达式

var distinctCustomers = customers.Distinct ( <lambda here ?> )
Run Code Online (Sandbox Code Playgroud)

或者比上面列出的更清洁的Linq表达.

有任何想法吗?

c# linq

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

标签 统计

c# ×3

xaml ×2

aws-api-gateway ×1

http-authentication ×1

linq ×1

mvvm ×1

wpf ×1

wpfdatagrid ×1