我似乎无法从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中编写嵌套类型时的设计时错误
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 …
是否可以通过AWS API Gateway Service使用基本身份验证而不是AWS4-HMAC-SHA256身份验证?我需要支持仅支持基本身份验证的webhook调用的系统。
我想使用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表达.
有任何想法吗?