小编kub*_*003的帖子

WPF公开绑定的计算属性(作为DependencyProperty)

我有一个复杂的WPF控件,由于某些原因(即性能)没有使用依赖属性而是简单的C#属性(至少在顶级,它们作为属性公开).

目标是使绑定到一些顶级属性成为可能 - >我想我应该将它们声明为DP.(对吗?还是有其他方法来实现这一点?)

我开始在MSDN上阅读DependencyProperties和DependencyObjects并找到一个例子:

public class MyStateControl : ButtonBase
{
  public MyStateControl() : base() { }
  public Boolean State
  {
    get { return (Boolean)this.GetValue(StateProperty); }
    set { this.SetValue(StateProperty, value); } 
  }
  public static readonly DependencyProperty StateProperty = DependencyProperty.Register(
    "State", typeof(Boolean), typeof(MyStateControl),new PropertyMetadata(false));
}
Run Code Online (Sandbox Code Playgroud)

如果我是对的 - 这段代码强制要由DependencyProperty备份属性,它将它限制为一个带存储的简单属性(从功能的角度来看,不是技术上的),而不是每次getter都能计算属性值调用并在每次调用setter时设置其他属性/字段.

我该怎么办?有什么方法可以让这两个世界在某个时刻相遇吗?

//编辑我想我必须告诉你更多关于我想做什么以及我的局限性.所以:

我有TabControl绑定到ViewModel(我正在使用MVVM模式)对象的集合.每个选项卡都是该集合的一个对象的编辑器.对象可以是不同的类型,因此我有多个定义,每个定义具有不同的DataType属性.现在,我有一个复杂的WPF控件,我想将其用作其中一个DataTemplates的一部分.如果我使用通常的TextBox,我可以简单地绑定到它的Text属性,但我不能对该自定义控件的Text属性执行相同的操作,因为它的Text属性不是依赖属性.在这种情况下,我有:

  • 没有直接访问控件本身或其事件
  • 我可以用来做这种事情的文件背后没有代码

但我能看到一个肮脏的解决方案 -

  1. 在Window类中,我必须订阅绑定到TabControl的集合的CollectionChanged事件.
  2. 每当将项目添加到该集合时,使用ItemContainerGenerator获取I假设TabItem的副本并使用它来查找"复杂控制"的正确副本
  3. Regiter项目处理程序将"复杂控件"事件用于完成工作

这是错误的,因为:

  • 这也是MVVM - 我必须使用tab控件来完成工作而不是在ViewModel类中执行它
  • 这会以不受欢迎的方式结合视图和视图模型

wpf dependency-properties

5
推荐指数
2
解决办法
4085
查看次数

MVVM,集合和ORM

我试图使用MVVM和Entity Framework的MVVM设计模式来创建一个简单的应用程序.如果课程松散耦合,一切顺利,好,但如果我有...... 比如两个模型类:Customer和Address,Customer有一组Addresses.

现在,对于那些类,我需要创建两个VM类 - CustomerVM和AddressVM.CustomerVM应具有AddressVM对象的ObservableCollection.对这些VM类(包括CustomerVM和AddressVM上的所有CRUD操作)所做的每一次更改都需要反映在模型类中 - 这就是为什么我最终编写了一些代码,例如.订阅ObservableCollection的已更改事件,如果添加了新对象,则向模型添加新对象......依此类推......

怎么办?使用MVVM时这是常见的吗?我做的一切都好吗?如何减少这种简单类层次结构所需的代码量?是否有任何框架可以创建与层次结构中的其他类"表现良好"的基本VM类?如果阶级关系变得更复杂怎么办?

或者简单地说:

如何反映模型集合中vm集合中所做的更改:

CustomerVM1.AdressesVM.Add(new AddressVM{City="New York"}) 
Run Code Online (Sandbox Code Playgroud)

应该导致相当于:

Customer1.Adresses.Add(new Address{City="New York"})
Run Code Online (Sandbox Code Playgroud)

反过来也有同样的问题 - 如何反映模型中集合的更改要包含在视图模型中,但我对第一个更感兴趣,因为它有一个更实际的应用程序,vm对象可以在大多数情况下只需重新创建.

wpf mvvm

5
推荐指数
1
解决办法
1798
查看次数

SQL Server - 对视图数据的更改跟踪

我想跟踪视图数据的变化。我认为当前的 sql server 更改跟踪不可能开箱即用。有没有人想出解决这个问题的方法?

//编辑我正在两个数据库之间同步数据。同步主要针对视图(某些表也是如此),因此我需要跟踪对视图数据所做的更改(插入/更新/删除)。任务并不简单,因为有些视图只是 JOINS,而有些则使用 PIVOT。

sql-server sql-server-2008

5
推荐指数
1
解决办法
4040
查看次数

SQL Server - 将错误报告回.NET

我正在使用Entity Framework和存储过程来插入/更新/删除实体.

我正在做的任务是使用FIFO/LIFO方法进行库存管理=>那些插入/更新/删除执行多次检查并且可能失败(有时它们会失败).

问题是我想向.NET报告出错的原因和原因.我该怎么做?

目前我正在使用这样的东西:

BEGIN --rollback
ROLLBACK TRAN
RAISERROR (N'There''s not enough items in stock.', -- message
    16, -- severity
    1) -- state
END;
Run Code Online (Sandbox Code Playgroud)

我总是得到"MSDTC错误" - "基础提供程序在EnlistTransaction上失败了."

.net t-sql sql-server

5
推荐指数
1
解决办法
134
查看次数

Css - 覆盖Internet Explorer特定样式

我正致力于电子商务Gekosale的造型.不幸的是,我无法改变现有的css文件(当用户在管理区域中保存一些设置时,它们会被覆盖).那些现有的css文件包含IE特定的样式,即.

progid:DXImageTransform.Microsoft.gradient(startColorstr='#063053', endColorstr='#395873');
Run Code Online (Sandbox Code Playgroud)

我不知道如何从我自己的文件中更改它们.我知道如何改变每一种"正常"风格

.class123
{
  color: red;
}
Run Code Online (Sandbox Code Playgroud)

可以很容易地改变:

.class123
{
  color: blue !important;
}
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我如何关闭IE渐变和其他类似的CSS?

css internet-explorer

5
推荐指数
1
解决办法
2242
查看次数

如何强制webpack为资源生成动态publicPath

我试图弄清楚如何实现一个 MicroFrontend Host 应用程序,该应用程序能够引导一个或多个使用 webpack 构建的 React 应用程序。为此,我需要强制应用程序从某个不同的 URL 加载其资源 - 而不仅仅是使用相对路径。

Webpack 有一个很好的设置公共路径的功能:https ://webpack.js.org/guides/public-path/但是有一些限制:

  • 如果我不在构建时应用它,那么 index.html 文件中呈现的所有内容都不会包含它
  • 它是一个全局变量,使其无法用于我的情况 - 我无法为两个不同的微前端设置两个不同的值

有什么方法可以为使用 webpack 构建的应用程序制作这样一个动态的公共 url?我可以接受这样一个事实,即我必须手动更新 index.html 中的所有 url,但是我希望能够从其他一些 URL 获取所有其他资源(图像等)。这通常类似于将 webpack 生成的所有资源托管在 CDN 上,并且仍然从具有不同地址的 Web 服务器提供 index.html。

webpack

5
推荐指数
1
解决办法
495
查看次数

jQuery按名称选择元素

我有以下html:

<td valign="top" align="left"> <input style="width:250px;" name="men_url" type="text" /></td>


<td valign="top" align="left"> 
<select name="men_page">
 <option value="">Wybierz stron?</option>
 <option value="index.php?page=8">O firmie</option>
 <option value="index.php?page=9">Referencje</option>

</select>
</td>
Run Code Online (Sandbox Code Playgroud)

和两个相应的jQuery选择器:

$("select[name='men_page']")
Run Code Online (Sandbox Code Playgroud)

$("input[name='men_url']")
Run Code Online (Sandbox Code Playgroud)

第一个效果很好,第二个没有返回.这可能有什么问题?

特别提醒($("input [name ='men_url'").name); 显示"未定义"

html javascript jquery

4
推荐指数
1
解决办法
133
查看次数

FREETEXT搜索 - 根据匹配的结果排序结果

我正在尝试实施全文搜索.我正在使用FREETEXT,我得到了正确的结果.问题是结果的排序.如果尝试搜索"停车场",那么与这两个词匹配的结果应该在开头,然后只匹配其中一个.我怎么能做到这一点?

谢谢

sql-server full-text-search sql-server-2008

4
推荐指数
1
解决办法
2043
查看次数

错误:await要求类型具有合适的GetAwaiter方法

我已经将同一段代码从一个项目复制到另一个项目,在第一个项目中它编译得很好,但在第二个项目中它没有.

这件作品是:

using Windows.Devices.Bluetooth;
// a couple of lines of other code
var rfcommProvider = await RfcommServiceProvider.CreateAsync(RfcommServiceId.FromUuid(RfcommChatServiceUuid));
Run Code Online (Sandbox Code Playgroud)

错误:

'await' requires that the type 'Windows.Foundation.IAsyncOperation<Windows.Devices.Bluetooth.Rfcomm.RfcommServiceProvider>' have a suitable GetAwaiter method. Are you missing a using directive for 'System'? 
Run Code Online (Sandbox Code Playgroud)

第一个项目是由Microsoft创建的演示,它是一个Windows 8.1应用程序.

我的应用程序是正常的WPF应用程序,它的目标是.NET 4.5.1和Windows 8.1和我加了参考Windows.winmd描述这里

我不知道为什么同一段代码可能在一个应用程序中编译而在另一个应用程序中编译时,如引用,命名空间等所有常见的东西都可以.我唯一的想法是,我可能正在引用一些尚未等待的旧版本,但我不知道如何验证这一点.

.net c# bluetooth async-await windows-runtime

3
推荐指数
1
解决办法
4643
查看次数

茉莉花语境+打字稿

我将 Jasmine 与 Typescript 一起使用,最近我们开始使用和this中的上下文。beforeEachit

例子:

beforeEach(() => {
  this.fixture = TestBed.createComponent(blablabla);
});

it('should do something', () => {
   expect(this.fixture).toBeTruthy();
});
Run Code Online (Sandbox Code Playgroud)

问题是 TypeScript 不够聪明,无法弄清楚thisinside与 inbeforeEach完全相同。有谁知道一种简单的方法来“暗示”打字稿这个事实?thisit

这可能吗?

jasmine typescript

3
推荐指数
1
解决办法
592
查看次数

SQL Server - 事务中的一个语句的结果立即对下一个语句可见?

这个:

use test;

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;


BEGIN TRANSACTION;

EXEC sp_RENAME 'table1.asd' , 'ads', 'COLUMN';

INSERT INTO table1 (ads) VALUES (12);

COMMIT
Run Code Online (Sandbox Code Playgroud)

是一个简单的例子,展示了我想做的事情.

我想以某种方式更改表并在一个事务中执行插入/删除(或对表的其他修改).

问题是语句中的结果sp_RENAME永远不会立即可见INSERT.我玩过不同的事务隔离级别 - 它始终是相同的(因此事务永远不会提交).

通常我只是将GO语句用于不同的批次,但我需要一批,因为...

我的真正任务是编写一个脚本,将标识和FK添加到表中(这需要使用新模式创建另一个表,从旧模式执行标识插入,重命名表并应用约束).我需要安全地玩它 - 如果程序的任何部分失败,我必须回滚整个事务.这就是为什么我想做这样的事情:

BEGIN TRAN
    --some statement

    IF (@@ERROR <> 0) GOTO ERR_HANDLER

    -- some other statement

    IF (@@ERROR <> 0) GOTO ERR_HANDLER

COMMIT TRAN

RETURN 0

ERR_HANDLER:
PRINT 'Unexpected error occurred!'
ROLLBACK TRAN
RETURN 1
Run Code Online (Sandbox Code Playgroud)

由于标签仅在批处理内部工作,因此我无法使用GO语句.

那么我怎么能:

  • make语句(即ALTER TABLE,sp_RENAME)会立即生效吗?

要么

  • 以其他方式编写整个解决方案,以便在生产数据库中运行是安全的吗?

sql-server sql-server-2008

2
推荐指数
1
解决办法
1107
查看次数

Visual Studio 2008 Css 3支持

Visual Studio 2008仅支持CSS 1.0,2.0和2.1.如果我试着添加...... 像text-shadow属性一样,它被概述为无效.

是否有Css定义或我可以下载并制作vs识别这些新属性的东西?

css validation visual-studio

1
推荐指数
1
解决办法
4033
查看次数

Windows服务安装 - 当前目录

这个问题与我之前的问题有关 .我在C#中编写了一个服务,我需要将它的名称设置为动态,并从配置文件中加载名称.问题是调用服务安装程序时的当前目录是net framework 4目录,而不是我的程序集所在的目录.

使用该行(这有助于解决同样的问题,但服务已经运行) System.IO.Directory.SetCurrentDirectory(System.AppDomain.CurrentDomain.BaseDirectory);

将目录设置为

C:\Windows\Microsoft.NET\Framework\v4.0.30319
Run Code Online (Sandbox Code Playgroud)

这也是初始值.

如何走正确的道路?

c# windows-services

0
推荐指数
1
解决办法
4909
查看次数