我正在研究这个表面项目,我们有一个bing贴图控件,我们希望通过数据绑定在地图上绘制折线.
发生的奇怪行为是,当我单击"添加"按钮时,地图上没有任何反应.如果我稍微移动地图,则会在地图上绘制折线.另一种有效的方案是单击添加按钮一次,没有任何反应,再次单击它会绘制两条折线.(在我的手册集中,我有4个LocationCollections),因此第3次点击和第4次点击同样会发生两条线的绘制.
我完全不知道在哪里可以解决这个问题.我已经尝试订阅Layoutupdated事件,这两种情况都会发生.还向observablecollection添加了一个collectionchanged事件,以查看是否触发了add,并且是触发了它.我尝试的另一件事是将折线更改为图钉并从管道视图模型中的位置集合中获取第一个位置,而不是预期的工作.
我已经上传了一个示例项目,如果你想看看自己发生了什么.
真的希望有人能指出我正确的方向,因为我不再有线索了.
您可以在下面找到我编写的代码:
我有以下viewmodels:
MainViewModel
public class MainViewModel
{
private ObservableCollection<PipelineViewModel> _pipelines;
public ObservableCollection<PipelineViewModel> Pipes
{
get { return _pipelines; }
}
public MainViewModel()
{
_pipelines = new ObservableCollection<PipelineViewModel>();
}
}
Run Code Online (Sandbox Code Playgroud)
PipelineViewModel具有实现INotifyPropertyChanged的Locations集合:
PipelineViewModel
public class PipelineViewModel : ViewModelBase
{
private LocationCollection _locations;
public string Geometry { get; set; }
public string Label { get; set; }
public LocationCollection Locations
{
get { return _locations; }
set
{
_locations = value;
RaisePropertyChanged("Locations");
}
}
}
Run Code Online (Sandbox Code Playgroud)
我的XAML如下所示: …
我试图使用LINQ基于元数据创建文档的分组列表,元数据是文档上的列表.
以下是我的对象结构的外观:
List<Document>
--> List<Metadata>
--> Metadata has a name and a value property.
Run Code Online (Sandbox Code Playgroud)
我想基于具有名称:ID的元数据标签对文档进行分组,并将它们分组,其中ID属性的值相同.
我试过这样的:
var x = response.Document
.GroupBy(d => d.Metadata.Where(dc => dc.Name == DocProperty.ID)
.Select(dc => dc.Value));
Run Code Online (Sandbox Code Playgroud)
这会生成单个文档的列表,但不会对ID进行分组.
还考虑选择不同的ID列表,然后遍历文档列表并查找与ID匹配的文档.这似乎是一个很大的开销,因为对于不同列表中的每个ID,我必须每次进入元数据列表并找到文档并且必须对找到的多个项目进行额外检查,获取我需要的属性等.
任何人都知道如何使这个东西工作?
在我们的Windows应用商店应用中,我们有一个文本框,当应用程序启动时,此文本框始终会获得焦点.在桌面方案中没有问题,但在平板电脑设备上,此焦点将直接打开屏幕键盘,这不是我们想要的场景.
我们尝试使用.Focus(FocusState)方法将焦点设置在另一个控制程序上,但不知何故焦点被设置回文本框.我们都将焦点设置在LoadState或OnNavigatedTo方法中.
只有当我们有计时器时,我们才能将焦点设置成另一个控件.任何人都有想法如何将焦点设置为另一个控件,或者最好设置不关注控件?
我正在使用Office 365 API从我的日历中请求事件.具体来说,我有一个共享日历(我与之共享的日历可以编辑日历),但是当从API请求数据时,我无法看到事件的组织者的差异.由于我想根据添加了该事件的人发送不同的消息,我想知道是谁添加了该消息.
是否有其他财产或方式来确定谁添加/更新了活动?
在我们的SharePoint 2010项目中,我们使用Linq to SharePoint来获取ConfigurationItems列表.在我们的测试环境中,我们从未从此列表中获取数据时遇到问题.在我们的生产环境中,我们现在有时(我们现在找不到模式)在循环遍历列表中的项时获取空引用异常.
以下是从Linq到SharePoint代码抛出的异常:
Object reference not set to an instance of an object. StackTrace: at Microsoft.SharePoint.Linq.FieldRef.GetHashCode() at Microsoft.SharePoint.Linq.FieldRef.FieldRefEqualityComparer.GetHashCode(FieldRef obj) at System.Linq.Set`1.InternalGetHashCode(TElement value) at System.Linq.Set`1.Find(TElement value, Boolean add) at System.Linq.Enumerable.d__7a`1.MoveNext() at System.Linq.Buffer`1..ctor(IEnumerable`1 source) at System.Linq.Enumerable.ToArray[TSource](IEnumerable`1 source) at Microsoft.SharePoint.Linq.SelectMappingInfo.GetDistinctMappedFields() at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.SelectWithInfoOp.PushDownSelect(Context ctx) at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.SelectWithInfoOp.Process(Context ctx) at Microsoft.SharePoint.Linq.Rules.GuardedRule`4.c__DisplayClass7.b__6(TSourceBase src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.RewriteRule`2.Apply(TNode src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.CacheRule`3.Apply(TSource src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.b__0(Expression e, Context ctx) at Microsoft.SharePoint.Linq.Rules.ChildRule`2.Apply(TNode src, TContext ctx) at Microsoft.SharePoint.Linq.Rules.PushDownProcessor.b__3(Expression e, Context ctx) at Microsoft.SharePoint.Linq.Rules.RewriteRule`2.Apply(TNode src, TContext ctx) …
我想创建一些接受Func参数的重载方法.重载方法应该使用参数中定义的最通用类型调用该方法.下面是我的方法的一个简单示例,以及我想如何调用它们:
public static TResult PerformCaching<TResult, T1>(Func<T1, TResult> func, T1 first, string cacheKey)
{
return PerformCaching((t, _, _) => func, first, null, null, cacheKey);
}
public static TResult PerformCaching<TResult, T1, T2>(Func<T1, T2, TResult> func, T1 first, T2 second, string cacheKey)
{
return PerformCaching((t, t2, _) => func, first, second, null, cacheKey);
}
public static TResult PerformCaching<TResult, T1, T2, T3>(Func<T1, T2, T3, TResult> func, T1 first, T2 second, T3 third, string cacheKey)
{
Model data = Get(cacheKey);
if(data == null)
{
Add(cacheKey); …
Run Code Online (Sandbox Code Playgroud) 在我目前的项目中,我们为代码指标"可维护性指数"和"Cyclometic Complexity"设定了一些目标.可维护性指数应为60或更高,Cyclometic Complexity为25或更低.我们知道60和更高的可维护性指数相当高.
我们还使用了很多linq来过滤/分组/选择实体.我发现这些linq查询在维护性指数上得分并不高.将这些查询提取到扩展方法中,可以给我一个更高的可维护性指数,这很好.但是在大多数情况下,扩展方法不再是通用的,因为我将它们与我的类型而不是泛型类型一起使用.
例如,以下linq-query vs扩展方法:
Linq查询
List.Where(m => m.BeginTime >= selectionFrom && m.EndTime <= selectionTo)
Run Code Online (Sandbox Code Playgroud)
扩展方法:
public static IEnumerable<MyType> FilterBy(this IEnumerable<MyType> source, DateTime selectionFrom, DateTime selectionTo)
{
return (IEnumerable<MyType>)source.Where(m => m.BeginTime >= selectionFrom && m.EndTime <= selectionTo);
}
List.FilterBy(selectionFrom, selectionTo);
Run Code Online (Sandbox Code Playgroud)
扩展方法为我提供了6个点的可维护性指数改进,并提供了一个很好的流利语法.另一方面,我必须添加一个静态类,它不是通用的.
关于什么方法的任何想法会对你有利吗?或者可能对如何重构linq查询以提高可维护性指数有不同的想法?
linq maintainability extension-methods abstraction cyclomatic-complexity
在项目i用户SQL CE中,我有表:
[Table]
public class Article : INotifyPropertyChanged, INotifyPropertyChanging
{
// Define _cid: private field, public property, and database column.
private int _aid;
[Column(DbType = "INT NOT NULL IDENTITY", IsDbGenerated = true, IsPrimaryKey = true)]
public int aid
{
get { return _aid; }
set
{
NotifyPropertyChanging("aid");
_aid = value;
NotifyPropertyChanged("aid");
}
}
// Define nameColor name: private field, public property, and database column.
private int _rid;
[Column]
public int rid
{
get { return _rid; }
set
{
NotifyPropertyChanging("rid"); …
Run Code Online (Sandbox Code Playgroud) 如何在Silverlight C#for WP7中使用NavigationService作为同步回调的结果?
基本上,我在一个单独的线程上发送一个身份验证Web请求,当它返回成功或失败时,从系统回调中,我需要更改页面.
但导航只能在Silverlight UI线程上发生,我找不到任何类型的UI计时器功能来检查该线程上的状态.
以任何方式,是否可以从用户线程启动页面导航?
c# silverlight user-interface multithreading windows-phone-7
我的客户端有2个服务器,然后从第一个服务器然后想要发送带有一些参数的请求,第二个服务器用get方法获取那些参数,问题是当请求到来时有一个+符号,例如在血型组中它的A + ,B +,O +
数据很好但是当我插入记录时,它会从中移除+符号.
我怎么能完成它,因为它们之间有一些空间.
得到方法
http://domain.com/join.aspx?msid=238487987328&sms=Peter D 23 O + Indiana
当我使用Request.QueryString ["sms"]获取它时,删除+符号
感谢和问候
c# ×6
linq ×4
.net ×1
abstraction ×1
asp.net ×1
bing-maps ×1
grouping ×1
office365 ×1
office365api ×1
outlook.com ×1
overloading ×1
polyline ×1
silverlight ×1
textbox ×1
windows-8 ×1
wpf ×1
xaml ×1