小编Ber*_*ryl的帖子

wpf图像源上的datatrigger

假设绑定是正确的并且图像文件是它们所处的位置,那么有人能够发现当触发器评估为真时下面的xaml中的图像不会改变的原因吗?

干杯,
Berryl

<Image Source="..\..\Images\OK.png" Grid.Column="2" Stretch="None">
    <Image.Style>
        <Style>
            <Style.Triggers>
                <DataTrigger Binding="{Binding TimeSheet, Converter={StaticResource overQuotaConv}}" Value="True">
                    <Setter Property="Image.Source" Value="..\..\Images\Error.png"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>
Run Code Online (Sandbox Code Playgroud)

wpf datatrigger

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

IsSynchronizedWithCurrentItem属性和当前项更新

我有一个视图模型来管理对话框类型的视图,允许过滤列表(如果需要)和选择项目.无论我是否将IsSynchronizedWithCurrentItem设置为true,代码都能正常工作.我的理解是这个属性在ListView中默认是不正确的,所以我想更好地理解这个属性.

这是视图的xaml中的绑定设置(在没有synch属性设置的情况下也可以正常工作):

    <ListView  
          ItemsSource="{Binding Projects.View}" 
          IsSynchronizedWithCurrentItem="True"
          SelectedItem="{Binding SelectedProject, Mode=TwoWay}"             
                      >
Run Code Online (Sandbox Code Playgroud)

视图模型Projects实际上是一个由私有ObservableCollection支持的CollectionViewSource.我想我从Josh Smith的一个示例项目中琢磨了这个想法,但老实说我现在不记得了.以下是与xaml绑定相关的VM的相关部分:

private ObservableCollection<ProjectViewModel> _projectsInternal { get; set; }
public CollectionViewSource Projects { get; set; }

private void _populateProjectListings(IEnumerable<Project> openProjects) {
    var listing = (from p in openProjects 
                   orderby p.Code.ToString()
                   select new ProjectViewModel(p)).ToList();

    foreach (var pvm in listing)
            pvm.PropertyChanged += _onProjectViewModelPropertyChanged;

    _projectsInternal = new ObservableCollection<ProjectViewModel>(listing);

    Projects = new CollectionViewSource {Source = _projectsInternal};
}

/// <summary>Property that is updated via the binding to the view</summary>
public ProjectViewModel SelectedProject { get; set; …
Run Code Online (Sandbox Code Playgroud)

data-binding wpf selecteditem itemssource

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

CollectionViewSource CurrentItem

我在对话框视图模型中使用CollectionViewSource,它具有各种过滤要求,工作正常.我还维护了属性(SelectedProject)中所选项目的等价物,我想知道是否可以/应该取消它,因为View将知道当前项目.我的数据绑定看起来像:

<ListView  
      ItemsSource="{Binding Projects.View}" 
      IsSynchronizedWithCurrentItem="True"
      SelectedItem="{Binding SelectedProject, Mode=TwoWay}">
Run Code Online (Sandbox Code Playgroud)

我使用SelectedProject的setter来促进单元测试,并且就我所见,CurrentItem似乎不可设置.当我想使用它时,我还需要将它强制转换为正确的对象.OTOH,如果 SelectedProject是冗余的,那么我会向它显示与任何其他冗余相同的尊重并删除它.

那么,当您使用CollectionViewSource时,您通常如何处理当前项?

.net data-binding wpf collectionviewsource

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

我可以在LINQ中获得两个IEnumerables的增量吗?

不是总增量,而是每个元素的增量.这里有一些代码来解释我的意思:

var deltaTotals = _deltaEnumerable.Select(a => a.Amount).ToList();
var oldTotals = _totalsEnumerable.Select(d => d.Amount).ToList();

// trigger change in _totalsEnumerable

// ** can LINQ do the lines below 
var newTotals = totalsEnumerable.Select(d => d.Amount);
for (var i = 0; i < 7; i++) {
    var newAmount = oldTotals[i] - deltaTotals[i];
    Assert.That(newTotals.ElementAt(i), Is.EqualTo(newAmount));
}
Run Code Online (Sandbox Code Playgroud)

这是最后四行代码,似乎在某种程度上可能有更优雅的方式在LINQ中做.

干杯,
Berryl

c# linq

8
推荐指数
2
解决办法
1501
查看次数

NHibernate映射属性与流畅的NHibernate

映射属性是否提供与nhib hbm相同的多功能性?你能和FNH一起使用它们来处理FNH还没有像hbm那样做的东西吗?

干杯,
Berryl

通过映射属性,我不是指hbm文件; NHIB(或者现在可能是NHib贡献者)显然存在属性,用于装饰类和类属性.我猜这些早期的FNH,但不确定.

nhibernate nhibernate-mapping fluent-nhibernate

8
推荐指数
2
解决办法
5130
查看次数

WPF/Silverlight的TDD类型方法

有没有人有TDD-ish方法来设计复杂的WPF xaml组件(即ControlTemplates,具有依赖属性的自定义控件)?

用户眼球是否最接近您断言您的代码是否正确?增量发展如何; 是否有助于逐步划分逻辑?

如果现在没有任何方法可以做到这一点,您认为随着平台继续成熟并获得采用,会有什么方法吗?

干杯,
Berryl

为了更加专注并避免引入TDD,请考虑将TDD应用于传统代码库(包括MVVM)的相当经验丰富的受众的主题.

silverlight wpf tdd

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

SQL Server代理在哪里,我需要它吗?

我想使用2008 Sql Server Mgt Studio将2005 db升级到2008,并在最后收到警告.问题:

  1. 我不再拥有SQL Server 2008的磁盘; 我是否需要安装或启动代理?如果我无法安装Agent,升级到2008会有效吗?
  2. 如果Agent可能已安装但未启动,它在哪里?我看到另一个SO帖子说这是一个登录选项,但我没有在任何地方看到它.

另外,我唯一真正的动机是日期时间类型已成为一个问题.人们在日期和日期时间2之前需要比18世纪更早的日期时做了什么?

警告来自:复制数据库向导

SQL Server代理似乎未在目标服务器上运行.如果SQL Server代理未在目标服务器上运行,则"复制数据库向导"将无法正常运行.你想继续吗?

c# sql-server nhibernate sql-server-2008

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

在.Net 3.5中实现随机提供程序

以下是随机提供商Skeet帖子的高潮:

public static class RandomProvider
{    
    private static int seed = Environment.TickCount;

    private static ThreadLocal<Random> randomWrapper = new ThreadLocal<Random>(() =>
        new Random(Interlocked.Increment(ref seed))
    );

    public static Random GetThreadRandom()
    {
        return randomWrapper.Value;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想在.NET 3.5项目中使用相同的概念,因此ThreadLocal不是一个选项.

如果没有ThreadLocal的帮助,你如何修改代码以拥有一个线程安全的随机提供程序?

UPDATE

好的,我现在和Simon的[ThreadStatic]一起去,因为我最了解它.这里有很多好的信息可以随着时间的推移进行审核和重新思考.谢谢大家!

public static class RandomProvider
{
    private static int _seed = Environment.TickCount;

    [ThreadStatic]
    private static Random _random;

    /// <summary>
    /// Gets the thread safe random.
    /// </summary>
    /// <returns></returns>
    public static Random GetThreadRandom() { return _random ?? (_random = …
Run Code Online (Sandbox Code Playgroud)

.net c# random .net-3.5

8
推荐指数
2
解决办法
1146
查看次数

单元测试附加行为wpf

一般来说,我仍然习惯于附加行为,并且看不出如何为一个人编写单元测试.

我在Sacha Barber的Cinch框架下面粘贴了一些代码,允许通过附加行为关闭窗口.有人能告诉我一个示例单元测试吗?

谢谢!
Berryl

    #region Close

    /// <summary>Dependency property which holds the ICommand for the Close event</summary>
    public static readonly DependencyProperty CloseProperty =
        DependencyProperty.RegisterAttached("Close",
            typeof(ICommand), typeof(Lifetime),
                new UIPropertyMetadata(null, OnCloseEventInfoChanged));

    /// <summary>Attached Property getter to retrieve the CloseProperty ICommand</summary>
    public static ICommand GetClose(DependencyObject source)
    {
        return (ICommand)source.GetValue(CloseProperty);
    }

    /// <summary>Attached Property setter to change the CloseProperty ICommand</summary>
    public static void SetClose(DependencyObject source, ICommand command)
    {
        source.SetValue(CloseProperty, command);
    }

    /// <summary>This is the property changed handler for the Close property.</summary>
    private …
Run Code Online (Sandbox Code Playgroud)

wpf unit-testing attachedbehaviors

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

nhibernate queryOver投影语法

我正在尝试从NH 3.0 Cookbook中获取一些代码,并想知道为什么我无法获得下面的代码来编译.我认为应该使这个工作的QueryProjectionBuilder在"NHibernate.Criterion.Lambda"中,但它的using指令没有帮助.

问题是SelectGroup和SelectAvg部分.假设书中的语法是正确的,那么有人可以看到缺少的参考吗?

namespace Queries.Implementations
{
using System;
using System.Collections.Generic;
using System.Linq;
using Eg.Core;
using NHibernate;
using NHibernate.Criterion;
using NHibernate.Criterion.Lambda;

    public class QueryOverQueries : CookbookQueriesBase
    {

        public override IEnumerable<NameAndPrice> GetAvgDirectorPrice(ISession session) {
            return _session.QueryOver<Movie>()
                .Select(list => list
                                    .SelectGroup(m => m.Director)
                                    .SelectAvg(m => m.UnitPrice)
                )
                .List<object[]>()
                .Select(props =>
                        new NameAndPrice
                        {
                            Name = (string) props[0],
                            Price = (decimal) props[1]
                        });

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# nhibernate projection queryover

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