如何在XAML中的Grid上设置DataContext,而不是在构造函数中?
以下是我在构造函数中的操作方法(LayoutRoot是XAML中定义的XAML Grid):
this.LayoutRoot.DataContext = this.HPVM;
Run Code Online (Sandbox Code Playgroud)
我宁愿在XAML中正确地做,但我不知道如何在XAML中引用HPVM对象.HPVM是USerControl类的公共属性.
它工作正常,如上所列,但同样,我只想知道如何在XAML中的UserControl类的属性,而不是总是必须在代码中执行它.
以下是所有相关代码:
<UserControl x:Class="SilverlightApplication1.SLHolePattern" x:Name="HolePatternsControl"
xmlns="http://schemas.microsoft.com/client/2007"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:controls="clr-namespace:Microsoft.Windows.Controls;assembly=Microsoft.Windows.Controls"
xmlns:local="clr-namespace:SilverlightApplication1"
xmlns:GeoPatterns="clr-namespace:GeoPatterns"
Height="700">
<UserControl.Resources>
...
Run Code Online (Sandbox Code Playgroud)
这是我的构造函数,其中当前设置了DataContext:
namespace SilverlightApplication1
{
public partial class SLHolePattern : UserControl, INotifyPropertyChanged
{
public HolePatternsViewModel HPVM;
public SLHolePattern()
{
InitializeComponent();
this.HPVM=new HolePatternsViewModel();
this.LayoutRoot.DataContext = this.HPVM;
...more code here
}
Run Code Online (Sandbox Code Playgroud)
一切正常,但我只想学习如何在XAML中设置DataContext,而不是在代码中.
在Windows 10中,如何在WSL中安装多个独立的Ubuntu实例?我想为不同的工作空间分别设置实例.例如,一个在Python开发,一个用于Ruby开发,一个对于.NET开发的核心,等我知道我可以堵塞所有这些在同一个Ubuntu的上WSL实例,但我宁愿为每个这些单独的一个场景.这可能吗?
我已经阅读过关于单元测试的内容,并且听到了其他人宣传其实用性的许多喧嚣,并希望看到它的实际应用.因此,我从我创建的一个简单应用程序中选择了这个基本类.我不知道测试会如何帮助我,我希望你们中的一个能够通过指出可以测试这些代码的哪些部分以及这些测试的外观来帮助我看到它的好处.那么,我将如何编写以下代码的单元测试?
public class Hole : INotifyPropertyChanged
{
#region Field Definitions
private double _AbsX;
private double _AbsY;
private double _CanvasX { get; set; }
private double _CanvasY { get; set; }
private bool _Visible;
private double _HoleDia = 20;
private HoleTypes _HoleType;
private int _HoleNumber;
private double _StrokeThickness = 1;
private Brush _StrokeColor = new SolidColorBrush(Colors.Black);
private HolePattern _ParentPattern;
#endregion
public enum HoleTypes { Drilled, Tapped, CounterBored, CounterSunk };
public Ellipse HoleEntity = new Ellipse();
public Ellipse HoleDecorator = new Ellipse(); …Run Code Online (Sandbox Code Playgroud) Devise Authentication gem(http://github.com/plataformatec/devise)是一个Rails工具,用于对用户进行身份验证并在Rails应用程序中设置其身份.我已经为Rails找到了很多很酷的东西,我只是在整个平台上被吹走了.我从四月开始只学习Rails,我就是喜欢它.
但是,我仍然在ASP.Net MVC中工作,我已经为我的MVC应用程序创建了自己的小登录控制器.似乎每个人都为他们的MVC应用程序做了这个,对吧?不这样做真的不是一种痛苦,但男人有一种重新发明轮子的感觉!我只处理基本sign_in行动,而不是所有的设计处理诸如电子邮件帐户信息,密码重置的,sign_up等其他行动因此,很自然我想知道如果有一个相当于.NET设计的漂浮在那里.
我知道,.net框架有一个验证组件,我也尝试一下,但它在某些方面是非常沉重的,在这种设计只是轻松处理等基本功能十分欠缺.甚至每个操作的视图也不像Rails的视图引擎支持那样完整..Net身份验证的表模式对于我的需求来说过于复杂.许多应用程序有自己的用户表和身份证,用户名,密码等,而我们只需要一个简单的方法来挂接到该表,并让所有的conrtollers,行动,以及对我们产生了意见.在轨设计宝石的善,是与一对夫妇发生的命令,在命令行,这里的几行,有来配置它在我的应用程序和控制器,然后BOOM,整个事情是只用这么少的努力我的工作甚至不敢相信.
我希望这个新的.NET NuPack事情可能提供容易带来工具,这样到一个MVC应用程序(Rails的什么叫宝石)的机会,但首先必须有人来构建它.有谁知道它是否已经完成了吗?
我正在编写一个Asp.Net WebForms应用程序,我在其中调用一个编辑页面,使用URL中的查询字符串参数传递有关要编辑的记录的数据.
喜欢:
http://myapp.path/QuoteItemEdit.aspx?PK=1234&DeviceType=12&Mode=Edit
Run Code Online (Sandbox Code Playgroud)
在应用程序的上一页中,我向用户展示了他可以根据自己的帐户权限编辑的筛选项目的GridView,并使用上述参数列表调用编辑页面,页面知道该怎么做.我不会对目标页面进行任何额外的检查,以验证用户是否有权访问传入的PK记录值,因为我打算依赖上一页来过滤列表,我会没事的.
但是,很明显,用户现在可以键入不同PK的URL并获得编辑该记录的访问权限.(或者,他可以访问Mode = View,但不能访问Mode = Edit或Mode = Delete.基本上,我希望避免验证目标页面上的记录和访问权限.
在调用目标页面之前,我还使用Session变量测试了相同的工作流程来存储PK,DeviceType和Mode,然后在目标页面中从Session中读取它们.因此没有涉及查询字符串参数.这将控制远离用户.
所以,我正在寻找关于这两种方法的反馈,以便我选择一种可接受/标准的方式来处理这个问题,因为它似乎是CRUD应用程序非常常见的应用程序设计模式.
使用C#...我有一个小应用程序,它可以从类中创建对象,并将其添加到对象集合中,并且在显示集合中当前所选对象的某些值的过程中会做一些UI事情(使用WPF UI) 。因此,我想添加一种功能,使用户可以将其对象集合保存到文件中,以便下次运行应用程序时可以将其加载回去。
我猜想XML是一种显而易见的方法,但我对如何做一无所知。因此,如何将对象的集合导出或转储到xml文件,然后,也许更重要的是,然后我将如何将该XML文件读回我的应用程序以重新创建集合?
我创建了我的第一个asp.net UserControl,我将在整个应用程序的几个地方使用它.它包含一个FormView,用于显示DataTable中记录的字段.
这一切似乎都很好,除了,我无法弄清楚如何在UserControl中的FormView上设置DataSource.我想在代码隐藏中的方法中设置DataSource.
我从intellisense看到UserControl没有DataSource属性,但它确实有一个DataBind方法.我可以想象,可能需要在UserControl中的多个控件上设置不同的DataSource,因此必须有一些方法可以钻入UserControl,但我无法弄明白.
这是aspx代码:
<%@ Register src="Controls/JobDetail.ascx" tagname="JobDetail" tagprefix="uc1" %>
...
<uc1:JobDetail ID="UserControlJobDetail" runat="server" />
...
Run Code Online (Sandbox Code Playgroud)
以下是尝试设置DataSource的方法:
public void BindJobRecord(string SelectedJobNo)
{
UserControlJobDetail.DataSource = LMDataClass.GetJob(SelectedJobNo);
UserControlJobDetail.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
这是UserControl:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="JobDetail.ascx.cs" Inherits="DwgDatabase.JobDetail" %>
<asp:FormView ID="fvJobDetail" runat="server" DataKeyNames="job_num">
<ItemTemplate>
<div style="float: left; border-width: 1px;" class="LabelStyle TextBoxStyle" >
<table>
<tr>
<td><asp:label runat="server" ID="lblJobNo" Text='Job No' /></td>
<td><asp:TextBox runat="server" ID="txtJobNo" Text='<%# Eval("job_num") %>' /></td>
</tr>
<tr>
<td><asp:label runat="server" ID="Label2" Text='Customer' /></td>
<td><asp:TextBox runat="server" ID="txtCustNo" Text='<%# Eval("cust_num") %>' /></td>
</tr>
<tr> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Response.Write()方法在aspx页面的<head>部分中动态插入内容.我需要从代码隐藏对象的属性中注入一个字符串值,该对象是我的CSS文件的链接.但是,它在运行时未正确处理.该对象在类上是公共的,并在Page_Load()事件中保持水分.在页面正文中,我可以成功地从Corpoartion对象中注入其他属性而没有任何问题.
为什么这不适用于<head>部分?
这是无法正确扩展的部分:
<link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />
Run Code Online (Sandbox Code Playgroud)
这是整个<head>部分:
<head runat="server">
<title></title>
<link href="<%= Corporation.PageStyleSheet %>" rel="stylesheet" type="text/css" />
<script language="JavaScript" type="text/JavaScript" src="cntv_menu.js"></script>
<script language="JavaScript" type="text/JavaScript" src="cntv_category.js"></script>
</head>
Run Code Online (Sandbox Code Playgroud)
这不能正常扩展的原因是什么?
如果用户使用http://www.mysite.com/Quote/Edit而不是http://www.mysite.com/Quote/Edit/1000访问我的网站会怎么样? 换句话说,他们没有为{指定值ID}.如果他们不这样做,我想显示一个漂亮的"未找到"页面,因为他们没有提供ID.我当前通过接受一个可以为null的int作为Controller Action中的参数来处理这个问题,它工作正常.但是,我很好奇是否有更标准的MVC框架处理方式,而不是我目前使用的代码(见下文).是一种更顺畅的方式来处理这个问题,还是这种方式很合适?
[HttpGet]
public ActionResult Edit(int? id)
{
if (id == null)
return View("QuoteNotFound");
int quoteId = (int)id;
var viewModel = new QuoteViewModel(this.UserId);
viewModel.LoadQuote(quoteId);
if (viewModel.QuoteNo > 0)
{
return View("Create", viewModel.Quote.Entity);
}
else
return View("QuoteNotFound");
}
Run Code Online (Sandbox Code Playgroud) 我肯定会在下面的代码中乱搞很多代码.似乎应该有一个更顺畅的方式.我基本上尝试使用构建器方法(CreateNewPattern)来处理创建传递的子类类型的新对象(通过CreateNewCircularPattern和CreateNewLinePattern方法).我目前只有两个子类型的CircularHolePattern和SingleLineHolePattern继承自HolePattern,但我希望随着我的应用程序的增长有更多.
这是一个使用委托或lambda的地方吗?它对它们一无所知,所以请尽可能具体和代码建议.
private CircularHolePattern CreateNewCircularPattern()
{
var CreatedPattern = CreateNewPattern(typeof(CircularHolePattern));
return (CircularHolePattern)CreatedPattern;
}
private SingleLineHolePattern CreateNewLinePattern()
{
var CreatedPattern=CreateNewPattern(typeof(SingleLineHolePattern));
return (SingleLineHolePattern)CreatedPattern;
}
private HolePattern CreateNewPattern(Type PatternTypeToCreate)
{
var NewHolePattern = (HolePattern)Activator.CreateInstance(PatternTypeToCreate);
NewHolePattern.PatternName = "Pattern #" + (HolePatterns.Count + 1).ToString();
this.AddPattern(NewHolePattern);
this.SetActivePattern(NewHolePattern);
return NewHolePattern;
}
Run Code Online (Sandbox Code Playgroud) asp.net ×3
c# ×3
asp.net-mvc ×2
.net ×1
collections ×1
datacontext ×1
datasource ×1
export ×1
generics ×1
head ×1
parameters ×1
query-string ×1
silverlight ×1
unit-testing ×1
windows-subsystem-for-linux ×1
xml ×1