因此,在下面的示例代码中,我创建了一个UserControl UserControldChild,它是主窗口Window1.xaml的子代.为什么该FindName()方法无法在下面的代码中找到"myButton"?
这必须与WPF XAML NameScopes有关,但我还没有找到关于NameScope如何工作的好解释.有人可以开导我吗?
//(xml) Window1.xaml
<Window x:Class="VisualTreeTestApplication.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:VisualTreeTestApp="clr-namespace:VisualTreeTestApplication"
Title="Window1" Height="400" Width="400">
<Grid>
<VisualTreeTestApp:UserControlChild/>
</Grid>
</Window>
//(c#) Window1.xaml.cs
namespace VisualTreeTestApplication
{
/// <summary>
/// Interaction logic for Window1.xaml
/// </summary>
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
Button btnTest = (Button)Application.Current.MainWindow.FindName("myButton");
// btnTest is null!
}
}
}
Run Code Online (Sandbox Code Playgroud)
UserControl如下:
//(wpf) UserControlChild.xaml
<UserControl x:Class="VisualTreeTestApplication.UserControlChild"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300" Width="300">
<Grid x:Name="myGrid">
<Button x:Name="myButton" Margin="20" >Button</Button>
</Grid>
</UserControl>
//(c#) UserControlChild.xaml.cs (no changes) …Run Code Online (Sandbox Code Playgroud) 我刚刚开始在我的测试中使用模拟对象(使用Java的mockito).毋庸置疑,他们简化了测试的设置部分,并且随着依赖注入,我认为它使代码更加健壮.
但是,我发现自己在实施而不是规范的测试中绊倒.我最终建立了期望,我认为这不是测试的一部分.在更多的技术术语中,我将测试SUT(被测试的类)与其协作者之间的交互,并且这种依赖不是合同或类的接口的一部分!
考虑到你有以下内容:在处理XML节点时,假设你有一个方法,attributeWithDefault()如果它可用,则返回节点的属性值,否则它将返回一个默认值!
我会像下面这样设置测试:
Element e = mock(Element.class);
when(e.getAttribute("attribute")).thenReturn("what");
when(e.getAttribute("other")).thenReturn(null);
assertEquals(attributeWithDefault(e, "attribute", "default"), "what");
assertEquals(attributeWithDefault(e, "other", "default"), "default");
Run Code Online (Sandbox Code Playgroud)
那么,在这里我不仅测试attributeWithDefault()遵循的规范,但我还测试了实施,因为我需要它来使用Element.getAttribute(),而不是Element.getAttributeNode().getValue()或Element.getAttributes().getNamedItem().getNodeValue()等
我认为我会以错误的方式处理它,所以任何关于如何改进我对模拟和最佳实践的使用的提示都将不胜感激.
编辑: 测试有什么问题
我做了上面的假设,测试是一种糟糕的风格,这是我的理由.
规范没有指定调用哪个方法.例如,只要正确完成,库的客户端就不应该关心如何检索属性.实施者应该有自由的权利,以他认为合适的任何方式访问任何替代方法(关于性能,一致性等).它的规范Element确保所有这些方法返回相同的值.
重新考虑Element到单个方法接口是没有意义的getElement()(Go实际上很好).为了便于使用,该方法的客户端应该能够只使用Element标准库中的标准.拥有接口和新类只是愚蠢,恕我直言,因为它使客户端代码难看,而且它不值得.
假设规范保持不变并且测试保持不变,新开发人员可能会决定重构代码以使用不同的使用状态的方法,并导致测试失败!那么,当实际实现符合规范时,测试失败是有效的.
让协作者以多种格式公开状态是很常见的.规范和测试不应取决于采用哪种特定方法; 只有实施应该!
我写了一个查询,其中表名是学生的 列,类,名称,语言
现在我需要在哪里写一个查询
class='10', names ="kiran, manju, ram , peter", Language='english'
如何编写一个查询,其中一列将具有多个值?
看起来很难找到解决方案
谢谢
在T-SQL中是否有一种方法可以使用自定义数字格式将TINYINT转换为VARCHAR?例如,我的TINYINT的值为3,我想将其转换为VARCH为03,因此它总是显示一个2位数字.
我没有在CONVERT函数中看到这种能力.
我通常通过ssh(screen和vim)在远程服务器上工作,我有一个Git存储库.有时我不上网,所以我的笔记本电脑上有一个单独的存储库(从我的遥控器克隆).
但是,我无法从远程端的这个存储库中取出,因为我通常在防火墙后面,或者我没有公共IP.
我已经读过,我应该只是推到一个裸存储库.我应该如何将更改推送到远程存储库?
鉴于我有一条命名路线:
map.some_route '/some_routes/:id', :controller => 'some', :action => 'other'
Run Code Online (Sandbox Code Playgroud)
如何使用路由规范文件'spec/routing/some_routing_spec.rb'来测试该命名路由?
我在"描述SomeRouteController"块之后尝试了这个并且它不起作用,我得到'undefined method'helper":
describe SomeRouteHelper, 'some routes named routes' do
it 'should recognize some_route' do
helper.some_route_path(23).should == '/some_routes/23'
end
end
Run Code Online (Sandbox Code Playgroud) 我的数据库有3个表:table1,table2和table3
我想在这个数据库上做一个mysqldump,条件如下:
目前,我使用2个mysqldump语句执行此操作
mysqldump -u user -p -d db > db_structure.sql
mysqldump -u user -p db --ignore-table=db.table3 > table1_and_table2_data.sql
Run Code Online (Sandbox Code Playgroud)
以它们被转储的相同顺序导入它们(结构,然后是table1和table2中的数据)
有没有办法将它组合成一个mysqldump命令?
我想知道无论如何我可以在一个选择框内的两行上划分一个项目.
我的选择框中的一个值是两个长,以适应我的div.
我需要创建一个调查,其中答案存储在数据库中.我只是想知道在数据库中实现这个的最佳方法是什么,特别是所需的表.调查包含不同类型的问题.例如:注释的文本字段,多项选择题以及可能包含多个答案的问题(即检查所有适用的答案).
我想出了两个可能的解决方案:
创建一个包含每个调查提交答案的巨型表格.每列将对应于调查的答案.即SurveyID,Answer1,Answer2,Answer3
我不认为这是最好的方法,因为在这项调查中有很多问题,如果调查要改变,似乎不是很灵活.
我想到的另一件事是创建一个问题表和答案表.问题表将包含调查的所有问题.答案表将包含调查中的各个答案,每行都与一个问题相关联.
一个简单的例子:
tblSurvey:SurveyID
tblQuestion:QuestionID,SurveyID,QuestionType,Question
tblAnswer:AnswerID,UserID,QuestionID,Answer
tblUser:UserID,UserName
我的问题是,可能有大量的答案会使答案表变得非常庞大.在性能方面,我不确定它是如此之大.
我很感激任何想法和建议.
我需要设计和实现基于计时器的游戏(客户端上的Flash,服务器上的PHP),比如Cafe World,即用户点击按钮,等待几秒钟,发生一些事情,然后他可以再次点击.这将是一个食品生产线的模拟.
将有N个生产线元素,每个元素都有一个具有不同持续时间的独立计时器,每个都可以提示M个操作(首先立即启动,下一个启动时完成前一个等等).
如何使用数据库后端实现此类功能的服务器端?目前我正在考虑提示的计数器,当前活动操作的"剩余时间"指示和上次更新的时间.当请求操作时,我将使用从上次更新开始经过的时间更新"剩余时间"和提示计数器.任何想法,评论或更好的想法?
最佳答案获得赏金.