我已经将我的WPF Datagrid的itemsource设置为从我的DAL返回的对象列表.我还添加了一个包含按钮的额外列,下面是xaml.
<toolkit:DataGridTemplateColumn MinWidth="100" Header="View">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="Button_Click">View Details</Button>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
Run Code Online (Sandbox Code Playgroud)
这很好.但是在Button_Click方法上,有什么方法可以获取按钮所在的数据网格上的行?更具体地说,我的对象的一个属性是"Id",我希望能够将它传递到事件处理程序中另一个表单的构造函数中.
private void Button_Click(object sender, RoutedEventArgs e)
{
//I need to know which row this button is on so I can retrieve the "id"
}
Run Code Online (Sandbox Code Playgroud)
也许我在我的xaml中需要额外的东西,或者我可能会以迂回的方式进行此操作?任何帮助/建议表示赞赏.
我一直注意到静态类在用于存储全局信息方面在SO上获得了很多不好的代表.(而且全局变量一般都被嘲笑)我只想知道下面的例子有什么好的选择......
我正在开发一个WPF应用程序,并且根据当前登录用户的ID过滤了从我的数据库中检索到的数据的许多视图.同样,我的应用中的某些点应该只能被视为"管理员"的用户访问.
我目前正在静态类中存储loggedInUserId和isAdmin bool.
我的应用程序的各个部分需要这些信息,我想知道为什么它在这种情况下不理想,以及替代品是什么.起床和跑步似乎非常方便.
我唯一可以想到的替代方法是使用IoC容器将Singleton实例注入需要此全局信息的类中,然后类可以通过其接口与之通信.然而,这是否过度/导致我陷入分析瘫痪?
提前感谢您的任何见解.
更新
因此,我倾向于通过IoC进行依赖注入,因为它可以更好地提供可测试性,因为我可以交换一个服务,如果需要,可以使用模拟提供"全局"信息.我想剩下的是注入的对象是单身还是静态.:-)
如果等待查看是否还有其他讨论,请问问Mark的答案.我不认为这是正确的方式.我只是想看到一些可以启发我的讨论,因为在没有任何建设性的替代方案的情况下,似乎有很多"这是坏的""很糟糕"的陈述在一些类似的问题上.
更新#2 所以我选择了Robert的答案,因为它是一个很好的选择(我认为替代方案是一个奇怪的词,可能是One True Way,因为它是内置于框架中).它并没有强迫我创建一个静态类/单例(尽管它是线程静态的).
唯一让我感到好奇的是,如果我必须存储的"全局"数据与用户身份验证无关,那将如何处理.
做一些实验,了解事情是如何运作的.我有以下代码......
for (int i = 0; i < 20; i++)
{
Task.Factory.StartNew(() => MethodTest(i));
}
Run Code Online (Sandbox Code Playgroud)
我想知道为什么MethodTest几乎总是收到int 20(除非我在调试器中单步执行).
显然我的理解中缺少一些东西,因为我认为当'i'被传递时它将成为托管线程本地存储的一部分.
任何人都知道为什么下面的代码中的下一个光标没有改变?
cursor = "-1"
followerIds = []
while cursor != 0 do
followers = Twitter.follower_ids("IDTOLOOKUP",{"cursor"=>cursor})
cursor = followers.next_cursor
followerIds+= followers.ids
sleep(2)
end
Run Code Online (Sandbox Code Playgroud)
在第一次迭代,其中cursor = -1,它被分配来自twitter api的nextcursor.但是,当在后续迭代中将其发送到twitter API时,我得到的回复与我第一次使用相同的next_cursor相同.
我有什么想法我做错了吗?我正在使用twitter gem.
我有以下内容
var id='123';
newDiv.innerHTML = "<a href=\"#\" onclick=\" TestFunction('"+id+"', false);\"></a>";
Run Code Online (Sandbox Code Playgroud)
哪个呈现<a href="#" onclick="return Testfunction('123',false);"></a>在我的HTML中.
我遇到的问题是我希望调用方法TestFunction,并在我的函数StepTwo(string,boolean)中用作字符串参数,理想情况下最终会显示在实时HTML中,如图所示......
<a href="#" onclick="StepTwo("TestFunction('123',false)",true)"></a>
Run Code Online (Sandbox Code Playgroud)
注意TestFunction在这里是一个字符串(它在StepTwo中使用eval执行).
我试图通过以下方式格式化我的JS:
newDiv.innerHTML = "<a href=\"#\" onclick=\"StepTwo(\"TestFunction('"+id+"', false);\",true)\"></a>";
Run Code Online (Sandbox Code Playgroud)
虽然这在我的IDE中看起来是正确的,但在渲染的HTML中,它仍然无法相信.
如果有人能指出我正确的方向,我将不胜感激.谢谢!
注意:C是Microsoft C编译器.
我遇到以下代码的问题.
*Roomsize = (int*)calloc(sizeof(int),sched->numberOfRooms);
roomIndex = 0;
for(roomIndex=0; roomIndex< sched->numberOfRooms; roomIndex++)
{
fscanf(inputFile,"%d",&lineInput);
numberOfLinesRead++;
*Roomsize[roomIndex] = lineInput;
}
Run Code Online (Sandbox Code Playgroud)
这是一个单独的C文件.在我决定将事情分开以使它们更易于维护之前,我没有遇到这个问题,而且我认为我只是把指针搞得一团糟.
calloc运行正常.
在循环的第一次迭代中,roomIndex的元素零被正确设置.
但是,循环中的第二个元素(元素1)始终会在运行时导致访问冲突.
我后来在我的代码中遇到了这个问题,并且使用了2d数组,但我认为这是完全相同的问题,这只是最简单的情况.
任何人都可以帮助我理解为什么除了第一个元素之外似乎不可能设置任何东西?