我试图弄清楚如何使用MVVM模式将WPF DataGrid的列标题和主数据绑定到数据源.我正在寻找的结果将是这样的:
alt text http://brian.vallelunga.com/files/datagrid-custom-headers.PNG
我已成功设置了标题,但我不确定如何绑定标题中的值.具体来说,复选框的IsChecked属性,组合框的选定索引和文本框的值.
我以前使用一个简单的DataTable来填充主网格数据,但是我需要更复杂的东西来保存网格数据和每列的值.或许我可以完全将它们存储为单独的实体.
那么,有没有人知道如何实现这种约束?一个限制是列必须是自动生成的,因为我不知道它们在运行时会是什么.应用程序只是从Excel电子表格加载数据,并且可能存在任意数量的列.
谢谢,Brian
我正在寻找类似于字典的数据结构,该字典将所有相关项的集合返回给密钥.
例如,我会像这样使用它:
var data = new FancyDataStructure();
data.Add(new string[] {"Elizabeth", "Liz", "Betty"});
data.Add(new string[] {"Bob", "Robert", "Rob"});
string[] alternateNames1 = data["Betty"];
string[] alternateNames2 = data["Liz"]
Run Code Online (Sandbox Code Playgroud)
在这个例子中,alternateNames1将是一个包含"Liz"和"Elizabeth"的数组,alternateNames2将是一个包含"Elizabeth"和"Betty"的数组.
我不想重新发明这个,但我找不到任何这种结构的例子.
更新
感谢那些回复了建议的人.很多人建议使用某些版本的Dictionary<string, IEnumerable<string>>.目前我正在使用这种方法,但它实际上并没有满足要求而不会非常难以维护.每个列表中的每个值都需要能够作为集合中添加到其中的每个其他值的键.
因此,给出以下内容:
data.Add(new string[] {"Elizabeth", "Liz"}
data.Add(new string[] {"Liz", "Betty"}
alternates = data["Betty"];
Run Code Online (Sandbox Code Playgroud)
我希望替补人员现在包含"伊丽莎白"和"利兹".
看起来我可能只需构建这样的结构以满足我的需求.保持想法即将到来!
布赖恩
在SQL Server 2008中进行舍入时,我看到了一些奇怪的行为.给出以下代码:
DECLARE @Value REAL
SELECT @Value = .35
SELECT ROUND(@Value, 1)
Run Code Online (Sandbox Code Playgroud)
我希望它的值为.4,但它会输出.3.我必须假设这是因为存储的值实际上小于.35,类似于.34999999999999.是这样的,还是我做错了什么?有没有办法确保这种行为符合预期,至少从可见值开始?
我正在尝试使用web.config转换在Azure网站中为SVG启用GZip压缩,但没有成功.这是我的变换的样子:
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.webServer>
<httpCompression>
<staticTypes>
<add mimeType="image/svg+xml" enabled="true" xdt:Transform="Insert" />
</staticTypes>
</httpCompression>
<staticContent xdt:Transform="Insert">
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
</system.webServer>
</configuration>
Run Code Online (Sandbox Code Playgroud)
这应该都为SVG添加mime类型,Azure似乎没有,然后启用压缩.我已经验证了mime类型添加工作正常,但在发布时我得到压缩元素的错误:
源文档中的任何元素都不匹配'/configuration/system.webServer/httpCompression/staticTypes'
从转换中删除压缩并将其直接添加到我的web.config文件中会删除错误,但我仍然没有在HTTP标头中看到压缩.以下是响应标头:
Accept-Ranges:bytes
Content-Length:23265
Content-Type:image/svg+xml
Date:Mon, 10 Jun 2013 17:19:37 GMT
ETag:"c4e9ec93d765ce1:0"
Last-Modified:Mon, 10 Jun 2013 12:39:41 GMT
Server:Microsoft-IIS/8.0
X-Powered-By:ASP.NET
X-Powered-By:ARR/2.5
X-Powered-By:ASP.NET
Run Code Online (Sandbox Code Playgroud) 我有一个表单我使用来自Forms插件的jQuery的ajaxSubmit函数提交.我正在尝试在提交之前向表单数据添加表单名称/值对.我的计划是修改beforeSubmit事件处理程序中的表单数据.
给定一个看起来像这样的函数:
function handleActionFormBeforeSubmit(formData, form, options) {
// Add a name/value pair here somehow to formData
}
Run Code Online (Sandbox Code Playgroud)
如何向formData添加简单对?它是以下形式的数组:
[ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
Run Code Online (Sandbox Code Playgroud)
谢谢,Brian
我想通过基本控制器或属性中的代码设置默认的Razor布局.文档中提到这是可能的,但我无法弄清楚它是如何完成的.
我知道View方法的masterPage参数可用,但我希望控制器返回的所有视图都自动设置该值.
不,我不能使用_ViewStart,因为我的视图将在不同的地方(这不是一个普通的MVC站点配置).
谢谢
是否可以捆绑一组脚本而不缩小它们?我只想结合几个第三方脚本文件,我从不需要非缩小版本.其中一些人警告不要再进一步缩小.
我试图让UpdateModel填充一个在编译时设置为只有接口的模型.例如,我有:
// View Model
public class AccountViewModel {
public string Email { get; set; }
public IProfile Profile { get; set; }
}
// Interface
public interface IProfile {
// Empty
}
// Actual profile instance used
public class StandardProfile : IProfile {
public string FavoriteFood { get; set; }
public string FavoriteMusic { get; set; }
}
// Controller action
public ActionResult AddAccount(AccountViewModel viewModel) {
// viewModel is populated already
UpdateModel(viewModel.Profile, "Profile"); // This isn't working.
}
// Form …Run Code Online (Sandbox Code Playgroud) 在ASP.NET 5中,我将从ASP.NET MVC的捆绑系统转移到Bower/Grunt工作流程,以进行客户端包管理和捆绑/缩小.我正在试图弄清楚如何密切复制MVC捆绑功能.
使用MVC捆绑,我手动创建了所有捆绑包,然后调用辅助方法,例如:@Styles.Render("~/bundles/styles/site").在开发中,我为bundle中的每个CSS文件获得单独的link元素,在生产中我得到一个组合和缩小的CSS文件.
我已成功与Bower建立Grunt以下拉包并将它们复制到适当的最终目的地,但开发和生产之间没有区别.与我现有的MVC捆绑工作流程最接近的功能是什么?
asp.net-mvc bundling-and-minification gruntjs bower asp.net-core
我不明白这两个调用SendMailAsync的实现之间的区别.大多数时候第一次,我收到一个TaskCanceledException,但是第二次,一切都按预期工作.
我认为这两种消费方法是等价的,但显然我错过了一些东西.
这似乎与之相关,但与之相反:TaskCanceledException等待时
// Common SmtpEmailGateway library
public class SmtpEmailGateway : IEmailGateway
{
public Task SendEmailAsync(MailMessage mailMessage)
{
using (var smtpClient = new SmtpClient())
{
return smtpClient.SendMailAsync(mailMessage);
}
}
}
// Caller #1 code - Often throws TaskCanceledException
public async Task Caller1()
{
// setup code here
var smtpEmailGateway = new SmtpEmailGateway();
await smtpEmailGateway.SendEmailAsync(myMailMessage);
}
// Caller #2 code - No problems
public Task Caller2()
{
// setup code here
var smtpEmailGateway = new SmtpEmailGateway();
return smtpEmailGateway.SendEmailAsync(myMailMessage);
}
Run Code Online (Sandbox Code Playgroud)
编辑:事实证明,Caller2方法也导致异常,我只是没有看到它们,因为WebJobs框架被调用了.Yuval的解释清除了所有这一切并且是正确的.
asp.net-mvc ×3
.net ×1
asp.net ×1
asp.net-core ×1
async-await ×1
azure ×1
binding ×1
bower ×1
c# ×1
columnheader ×1
datagrid ×1
gruntjs ×1
jquery ×1
modelbinders ×1
razor ×1
rounding ×1
set ×1
smtpclient ×1
sql-server ×1
svg ×1
wpf ×1
wpfdatagrid ×1