阅读编码恐怖,我刚刚遇到了FizzBuzz.
原帖是在这里:编码恐怖:为什么程序员不能..程序?
对于那些不知道的人:FizzBuzz是一款非常受欢迎的儿童游戏.从1到100计数,每次一个数字可以被3调用"Fizz"整除,每次一个数字可以被5调整为"Buzz",并且每次数字可以被3和5整除时,调用"FizzBuzz而不是数
但这一次,我刚刚开始编码.这是一分钟的工作,但有几件我不喜欢的事情.
这是我的代码
public void DoFizzBuzz()
{
var combinations = new Tuple<int, string>[]
{
new Tuple<int, string> (3, "Fizz"),
new Tuple<int, string> (5, "Buzz"),
};
for (int i = 1; i <= 100; ++i)
{
bool found = false;
foreach (var comb in combinations)
{
if (i % comb.Item1 == 0)
{
found = true;
Console.Write(comb.Item2);
}
}
if (!found)
{
Console.Write(i);
}
Console.Write(Environment.NewLine);
}
}
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:
我们有以下场景:
PasswordBox)我已经在MVVM中的PasswordBox上阅读了这个问题
但是如何做却没有答案!只是"永远不会那样".
传递密码的正确方法是什么?如何解决安全问题?
有没有适当的方式Binding向PasswordBox和密码不得保存在某个地方,好不好.
那么,MVVM做这些事情的方式是什么?
即使模式被破坏,有没有一种很好的方法来实现这样的事情?
想到Func<string>要检索它,但没有绑定这会弄得一团糟......
更新 相同用于从(希望加密的)密码存储区初始化PasswordBox.这不是打破MVVM模式吗?用户不希望每次启动应用程序时输入密码,或者想要使用我相信的数据库.
对于一个项目,我编写了一个wcf服务库.它可以在IIS和自托管服务中托管.
对于所有连接的外部系统,我提供了Mock实现,它们提供了一些通用数据,因此服务(库)保持运行和工作.它是一款经典的自动机/有限状态机.
引导时,所有数据源都连接在一起.在测试模式下,模拟实现是连接的.因此,当我运行测试时,服务库从自托管服务"启动",而不是IIS,状态机继续运行和处理数据包.
有没有办法从这样的运行中获得某种"测试覆盖率".
如果我可以告诉我从模拟对象提供的示例数据中遇到了哪些代码路径,我将非常感激.然后提供更多的testdata以获得更高的覆盖率.
如果我能做到这一点而不必提供"额外的"测试代码,那就太好了.我认为很多案例已经从模拟对象提供的数据中得到了解决.但是现在我没有起点.
以下是一些代码示例,可以更清楚地了解其含义.当然,代码被大大简化了.
在一个非常简单的控制台应用程序中启动服务(自托管版本)
static void Main(string[] args)
{
using (var host = new ServiceHost(typeof(MyServiceLib.Service.MyServiceLib)))
{
host.Open();
Console.ReadLine();
host.Close();
}
}
Run Code Online (Sandbox Code Playgroud)
在服务库中,从该代码调用构造函数
public MyServiceLib()
{
Task.Factory.StartNew(this.Scaffold);
}
Run Code Online (Sandbox Code Playgroud)
这只不过是启动状态机
private void Scaffold()
{
// lots of code deleted for simplicity reasons
var dataSource = new MockDataSource();
// inject the mocked datasource
this.dataManager = new DataManager(dataSource);
// this runs in its own thread. There are parts that are started on a timer event.
this.dataManager.Start();
}
public class DataManager …Run Code Online (Sandbox Code Playgroud) 对于我的treeview,我有两个不同的类提供ItemsSource.
public class TreeViewModel : ViewModelBase
{
public ObservableCollection<NodeViewModel> Items { get; set; }
}
public class NodeViewModel : ViewModelBase
{
public string Id { get; set; }
public string Name { get; set; }
public ObservableCollection<NodeViewModel> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
现在我希望我的TreeView在TreeViewModel中显示Items并显示NodeViewModel提供的分层数据.
这是我的XAML
<Window x:Class="TreeViewMasterDetails.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:TreeViewMasterDetails"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TreeView Height="Auto"
HorizontalAlignment="Stretch"
Margin="10"
VerticalAlignment="Stretch"
Width="Auto">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="x:Type local:TreeViewModel" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Path=Name}"></TextBlock>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="x:Type local:NodeViewModel" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Name}"></TextBlock>
</HierarchicalDataTemplate>
</TreeView.Resources> …Run Code Online (Sandbox Code Playgroud) 有没有可能为Textblock提供wordwrap建议,就像你可以用HTML做的那样,<SHY> (soft hyphen)或者<WBR> (word break)更复杂,更难维护zero-width-space ​
目前,Textblock在看到必要时会破坏单词,最后会出现像word一样的单词
Stackoverflo
w
我想要的是:
Stackover-
流程
或至少:
Stackover
流程
如果有建议的方法来实现所需,请告诉我.
我想将contextmenu绑定到命令列表.
<Grid.ContextMenu>
<ContextMenu ItemsSource="{Binding ItemContextCommands, Converter={StaticResource commandToStringConverter}}">
<ContextMenu.ItemTemplate >
<DataTemplate DataType="MenuItem">
<MenuItem Command="{Binding}"></MenuItem>
</DataTemplate>
</ContextMenu.ItemTemplate>
</ContextMenu>
</Grid.ContextMenu>
Run Code Online (Sandbox Code Playgroud)
在commandToStringConverter简单的命令列表转换为字符串调用列表ToString()列表中的每个命令.
我怎样才能实现Command每个MenuItem被称为?
我知道已经有关于该主题的问题,但其中的问题在某种程度上与其他问题有关,并没有提供确凿的答案.
特别是那里:问题1,问题2,当然还有问题3 所以请不要太快关闭这个问题.他们回答那里只是说"做这个,做那个"而不是为什么!
有些人否认需要a ViewModel并且说"标准"方式是直接绑定到模型.这是我否认并试图用技术论证来证明的.
从我在后台MVC,MVP,Presentation Model,它只是很自然地我使用ViewModel.也许我错过了一个重点?
所以对我来说,默认是绑定到a ViewModel,无论它Model是什么(无论它是否实现INotifyPropertyChanged).
我看到绑定到s的原因有几个ViewModel,包括(如此处提到的CodeProject和另一篇文章)
1.从视图中删除逻辑
2.安全
3.松耦合
4.发展速度
Prototype ViewModel层次结构开始并绑定到该层次结构Prototype ModelModel并且ViewModel可以开发testdriven,无论ViewView可完全由设计师,还是具有很强的设计背景开发商建5.解决了"棘手的同步"问题
6.整个项目的结构相同
7.可扩展性 …
我有两列数据表FromDate和ToDate,这是字符串格式.我想检查我的table.ie中是否有任何重复记录
From Date To Date
----------------------
9/01/2012 9/16/2012
8/23/2012 8/24/2012
8/25/2012 8/25/2012
8/5/2012 8/6/2012
8/26/2012 8/27/2012
9/15/2012 9/23/2012
Run Code Online (Sandbox Code Playgroud)
该表包含其日期范围映射的重复记录
From Date To Date
----------------------
9/01/2012 9/16/2012
9/15/2012 9/23/2012
Run Code Online (Sandbox Code Playgroud)
它应该返回false.
有人可以推荐一个库或代码来可视化C#中的二分图吗?
图#似乎不直接支持这种图形(但有一些支持解开顶点).
我想创建一些像这个二分图的图形,节点中有一些文本.宽度和高度相同的节点将是理想的.
WPF控件是完美的,因为它存在于图#中.甚至可能存在XAML定义?作为一个替代方案:报告窗口也可以非常好.
可能在Graph#中有更多经验的人可以提供有关如何利用Graph#进行此操作的提示.
尝试使用NodeXL,但这似乎不是一个完美的解决方案,因为节点似乎没那么多可修改.也许有人可以提供更好的解决方案.玩过Soroush提供的NetworkView.目前,这最接近我想要的.
-update- 尝试了Soroush Falahati共享的NetworkView.这似乎是一个很好的基础,但在我需要的时候还不够灵活.我有些问题,相信没有可以开箱即用的库.(NetworkView具有很好的功能,可以在控件中设置连接/边缘,从而为NodeXL提供额外的提升).也许Graph#可以做得更多,但目前我只是试过这两个.
我希望用户能够在TreeView中搜索项目.输入searchtext后,TreeViewItem应滚动到视图中.
现在我正在使用TreeView的MVVM模式,TreeViewItems和MainView.
我需要做些什么才能使用MVVM获得BringIntoView的功能?我可以绑定一些属性吗?(在MFC中有类似FirstVisibileItem的东西)
看过一个有行为的"解决方案".真的有必要吗?
c# ×10
wpf ×7
mvvm ×4
binding ×2
treeview ×2
.net ×1
bipartite ×1
contextmenu ×1
datatable ×1
fizzbuzz ×1
linq ×1
optimization ×1
passwordbox ×1
security ×1
sql ×1
textblock ×1
unit-testing ×1
wcf ×1