我的印象是,在配置文件中将端点定义为可能的客户端列表,但这没有任何意义(从某种意义上说,我认为它说的是什么计算机可以连接到服务)现在我正在收集它更多一个定义,那么有人请解释一下我的终点是什么吗?我理解定义合同接口然后实现合同的概念,但我迷失在那里,实际上有一些可用的东西.
在这种情况下,地址是什么?主持人地址?
绑定是使用正确的通信方法/协议吗?
合同本质上是"共享的对象"(是的,我知道这在技术上是不正确的,但在这里与我合作)
我可以看到这个概念存在一些潜在的困难但是这个想法是:
我更改了存储库A中的文件并提交,存储库B有一个文件,它是存储库A中文件的链接,我在存储库B的工作副本中单击更新文件,然后我从存储库A接收更新的文件.
我常常发现自己编写的代码如下:
if (Session != null)
{
Session.KillAllProcesses();
Session.AllUnitsReady -= Session_AllUnitsReady;
Session.AllUnitsResultsPublished -= Session_AllUnitsResultsPublished;
Session.UnitFailed -= Session_UnitFailed;
Session.SomeUnitsFailed -= Session_SomeUnitsFailed;
Session.UnitCheckedIn -= Session_UnitCheckedIn;
UnattachListeners();
}
Run Code Online (Sandbox Code Playgroud)
目的是清理我们在目标(会话)上注册的所有事件订阅,以便GC可以自由处理会话.我与同事讨论了实现IDisposable的类,但他相信这些类应该像这样执行清理:
/// <summary>
/// Disposes the object
/// </summary>
public void Dispose()
{
SubmitRequested = null; //frees all references to the SubmitRequested Event
}
Run Code Online (Sandbox Code Playgroud)
是否有理由选择一个而不是另一个?有没有更好的方法来解决这个问题?(除了各处的弱参考事件)
我真正希望看到的是一些类似于引发事件的安全调用模式:即安全和可重复.每次我附加到活动时我都记得要做的事情,这样我就可以确保清理起来很容易.
您好我最近调查了WPF并开始学习事件和命令.我通常使用按钮点击命令,这导致方法在我的"视图模型"中运行.
是否可以通过使用提交使Button对任何其他事件(如MouseOver事件)做出反应?或者在这种情况下会使用WPF事件?
如果要使用WPF事件,那么事件处理程序实现是否应该在视图模型中调用方法以保持关注点?
这是场景:
我有以下用户控件,想法是它的视图模型应该能够向视图发出信号,它需要"激活发光",从而播放故事板.
<UserControl x:Class="View.UnitView" ... >
...
<Storyboard x:Key="ActivateGlow">
...
</Storyboard>
...
<!-- INVALID BINDING! Not Dependancy Object-->
<EventTrigger RoutedEvent="{Binding OnActivateGlow}">
<BeginStoryboard Storyboard="{StaticResource ActivateGlow}"/>
</EventTrigger>
</UserControl>
Run Code Online (Sandbox Code Playgroud)
在UnitView的代码隐藏中,我有:
public event EventHandler ActivateGlow;
Run Code Online (Sandbox Code Playgroud)
并且在MVVM中非常正常,我为UnitViewModel提供了以下DataTemplate:
<DataTemplate DataType="{x:Type vm:UnitViewModel}">
<vw:UnitView d:DesignWidth="150" d:DesignHeight="100" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)
最后一个问题是,我如何设置一些东西,以便viewmodel可以触发OnActivateGlow事件?
我需要一个WPF控件上的TextBox,它可以接收文本Commit\r\n\r(这是.net字符串"Commit\\r\\n\\r")并将其转换回"Commit\r\n\r".net字符串.我希望有一个string.Unescape()和string.Escape()方法对,但它似乎不存在.我是否必须自己写?或者有更简单的方法吗?
我有单元测试我想针对示例XML文件运行,我应该如何将这些文件暴露给单元测试?我尝试过使用内容构建操作,但我无法访问应用程序上下文,因此GetContentStream已经完成.
我知道我可以将DataContext用于SQL数据库.但我觉得这是错误的做法.
所以这就是我想要做的事情,我只想从代码开始,它很可能会有意义.
<bl:InnerGlowBorder x:Name="glow"
InnerGlowColor="Teal">
<bl:InnerGlowBorder.Style>
<Style TargetType="bl:InnerGlowBorder">
<Style.Triggers>
<DataTrigger Binding="{Binding ViewUnitStatus}"
Value="UnitStatusModel.Pass">
<Setter Property="InnerGlowColor"
Value="Green" />
</DataTrigger>
<DataTrigger Binding="{Binding ViewUnitStatus}"
Value="UnitStatusModel.Fail">
<Setter Property="InnerGlowColor"
Value="Red" />
</DataTrigger>
<DataTrigger Binding="{Binding ViewUnitStatus}"
Value="UnitStatusModel.Indeterminate">
<Setter Property="InnerGlowColor"
Value="Yellow" />
</DataTrigger>
<DataTrigger Binding="{Binding ViewUnitStatus}"
Value="UnitStatusModel.Warning">
<Setter Property="InnerGlowColor"
Value="Orange" />
</DataTrigger>
</Style.Triggers>
</Style>
</bl:InnerGlowBorder.Style>
</bl:InnerGlowBorder>
Run Code Online (Sandbox Code Playgroud)
和枚举定义:
namespace SEL.MfgTestDev.ESS.ViewModel
{
public enum UnitStatusModel
{
Indeterminate,
Pass,
Fail,
Warning,
}
}
Run Code Online (Sandbox Code Playgroud)
我错过了一件让这件作品?我在enum上发现了一些依赖于对象数据源的WPF文章,我真的不喜欢这个解决方案,这里有什么更简单的东西吗?
所以,我有一些我想尝试的东西.我的想法是拥有一个可视化设计器作为Visual Studio扩展,我希望能够拖出事件处理程序和连接行为,任何曾经玩过魔兽争霸III脚本编辑器的人都会非常清楚我是什么意思我想做什么.这种东西在visual studio可扩展性工具中是否容易处理?如果是这样,我应该从哪里开始学习如何做到这一点?
我真的在寻找一些最佳实践智慧.所以这是问题,如果人们发表评论,我会添加更多.随意回答部分或全部问题.
什么时候我应该使用IDisposable?只有当我有非托管资源时?
配置模式有哪些变化,为什么它们会变化?
我应该注意哪些常见的非托管资源?
实施IDisposable是错误还是误导?
应该将Dispose调用链接在一起,还是应该依赖于使用语句? 例如:
public Dispose(bool disposing)
{
...
this.SomeDependency.Dispose;
}
Run Code Online (Sandbox Code Playgroud) c# ×4
.net ×3
wpf ×3
events ×2
mvvm ×2
binding ×1
dispose ×1
endpoints ×1
enums ×1
escaping ×1
eventtrigger ×1
idisposable ×1
mvvm-light ×1
string ×1
svn ×1
unit-testing ×1
wcf ×1