小编Bob*_*orn的帖子

WPF数据网格绑定在单击行标题之前不会更新

我有一个绑定到视图模型中的List的数据网格.在单击行标题之前,网格的内容不会更新.单击各种单元格不会影响它.我必须点击标题.

这是XAML中的datagrid:

<DataGrid x:Name="TransactionDetailsGrid" Grid.Row="1" AutoGenerateColumns="False" SelectionMode="Extended" IsReadOnly="True" HeadersVisibility="Column"
                  ItemsSource="{Binding TransactionDetailList}" SelectedItem="{Binding SelectedTransactionDetail}" GridLinesVisibility="None">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Path=Account.AccountNumber}" Header="Account No." HeaderStyle="{StaticResource DataGridHeaderStyleCenter}" Width="120" />
        <DataGridTextColumn Binding="{Binding Path=Account.AccountName}" Header="Account Name" HeaderStyle="{StaticResource DataGridHeaderStyleCenter}" Width="*" />
        <DataGridTextColumn Binding="{Binding Path=Amount}"  Header="Amount" HeaderStyle="{StaticResource DataGridHeaderStyleCenter}" Width="120" />
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

这是来自视图模型:

public List<TransactionDetail> TransactionDetailList
{
    get { return this._transactionDetailList; }

    set
    {
        this._transactionDetailList = value;
        RaisePropertyChanged("TransactionDetailList");                
    }
}
Run Code Online (Sandbox Code Playgroud)

这是视图模型中其中一个项目的编辑:

private void AddTransactionDetail()
{
    TransactionDetailViewModel viewModel = new TransactionDetailViewModel();

    MainWindowViewModel.ViewLoader.ShowDialog(viewModel);

    if (viewModel.TransactionDetail != null)
    {
        this.TransactionDetailList.Add(viewModel.TransactionDetail);
        RaisePropertyChanged("TransactionDetailList");
    } …
Run Code Online (Sandbox Code Playgroud)

wpf binding datagrid

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

.NET的一般异常处理策略

我习惯在每种方法中使用try/catch块.这样做的原因是我可以在违规点捕获每个异常并记录它.从我的阅读和与他人的对话中我理解,这不是一种流行的观点.人们应该只抓住人们准备处理的事情.但是,如果我没有抓到违规点,那么就有可能永远不会记录这种违规行为并了解它.注意:当我抓住并且不处理时,我仍然会抛出.这允许我让异常传播到将处理它的东西,但仍然让我在违规点记录它.

那么......如何在每个方法中避免try/catch,但仍然在错误发生时记录错误?

.net c# exception-handling exception-logging

12
推荐指数
3
解决办法
7048
查看次数

为什么我们必须使用typeof而不是仅仅使用类型?

在尝试将类型分配给类型的属性时System.Type,为什么我们不能这样做?

foo.NetType = bool;
Run Code Online (Sandbox Code Playgroud)

编译器生成此警告:

"表达预期."

解决它的方法是这样做:

foo.NetType = typeof(bool);
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么我们不能使用第一种方法?难道编译器不够聪明,无法弄清楚我们在这里要完成的工作吗?我们有必要采用第二种方法(typeof)吗?

c#

12
推荐指数
2
解决办法
669
查看次数

为什么要调用Dispose()?内存泄漏不会发生?

编辑:我的问题是没有得到我正在寻找的主要答案.我不清楚.我真的很想知道两件事:

  1. 不能调用Dispose()导致内存泄漏?
  2. 如果你有一个大型程序并且从不在任何IDisposable对象上调用Dispose(),那么最糟糕的事情是什么?

我的印象是,如果Dispose()未在IDisposable对象上调用内存泄漏.

根据这个帖子的讨论,我的看法不正确; 如果Dispose()未调用,则不会发生内存泄漏.

那么为什么打扰Dispose()呢?是否只是立即释放资源,而不是以后的某个时间?如果你有一个大型程序并且从不调用Dispose()任何IDisposable对象,那么最糟糕的事情是什么?

c# memory-leaks memory-management idisposable

12
推荐指数
3
解决办法
6779
查看次数

resharper提取界面变灰

如何使用resharper创建一个类的接口?该选项显示为灰色.

VS确实有一个选项可以重构接口,但是resharper默认将它取出.

在此输入图像描述

c# resharper visual-studio visual-studio-2012

11
推荐指数
2
解决办法
4366
查看次数

IIS 8 - 默认文档 - 找不到资源

我试图理解为什么在浏览虚拟目录时我的默认文档没有出现.如果我像我应该那样浏览网站,我会得到这个:

在此输入图像描述


但是,如果我将页面添加到URL,它会出现:

在此输入图像描述


一个SO答案建议删除除真实文档之外的所有默认文档(在IIS中).我尝试过(图片如下),但没有帮助.

在此输入图像描述


使用根URL(http://localhost/SignalRChat)时,为什么IIS不会提供该页面?

删除默认文档后,这是web.config的相关部分:

<defaultDocument>
    <files>
        <remove value="default.aspx" />
        <remove value="iisstart.htm" />
        <remove value="index.html" />
        <remove value="index.htm" />
        <remove value="Default.asp" />
        <remove value="Default.htm" />
        <add value="ChatPage.cshtml" />
    </files>
</defaultDocument>
Run Code Online (Sandbox Code Playgroud)

这是处理程序部分:

<handlers>
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*."
       verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
       modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll"
       preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*."
       verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS"
       modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
       preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*."
       verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler"
       preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
Run Code Online (Sandbox Code Playgroud)

.net asp.net iis asp.net-mvc-4 iis-8

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

在Visual Studio 2013中进行调试时无法看到类级变量

我在VS 2013中调试一些C#代码时观察到一些奇怪的行为.当我将鼠标悬停在任何作用于当前方法的变量上时,我可以看到变量的信息.在下面的屏幕截图中,您可以看到ivSimulation已固定并显示信息.然而,即使你不知道,我还有鼠标this._simulator,没有任何显示.QuickWatch也没有显示任何内容.

在此输入图像描述

另一位同事也有同样的问题.我们已经尝试过擦干文件夹并再次获取最新信息.我们还尝试将VS中的设置(工具 - >选项 - >调试 - >常规 - >使用管理兼容模式)更改为正在检查,但这也没有奏效.显然,这对其他人有用.这在VS 2012中运作得很好.

有任何想法吗?如何在调试器中显示类级变量?

编辑:另一块拼图

如果我将鼠标悬停在上面,this我会发现它是一个透明的代理.不知道为什么会这样.

在此输入图像描述

另一件作品:

this指的是派生自的类ContextBoundObject.我们这样做,所以我们可以使用拦截进行日志记录和异常处理.也许这就是原因.

我错了; 这在VS2012中不起作用.也许我以前从未注意过它.

如果我尝试在即时窗口中显示值,这就是我得到的:

?this._coater.Equipment.Line.Unit.Plant.Site.SiteId无法在类型为"Company.Mes.Core.Components.Logic.ModuleDerating.StandardDeratingComponentLogic"的实例上获取字段或调用方法,因为它是远程对象的代理.

c# debugging visual-studio-2013

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

获取任何枚举值的扩展方法

我一直在尝试创建一个扩展方法,它可以在任何枚举上工作,以返回它的值.

而不是这样做:

Enum.GetValues(typeof(BiasCode)).Cast<BiasCode>()
Run Code Online (Sandbox Code Playgroud)

这样做会很好:

new BiasCode().Values()
Run Code Online (Sandbox Code Playgroud)

如果没有新的话会更好,但这是另一个问题.

我有一个.NET小提琴,它有一个接近的解决方案(代码如下所示).此代码的问题是扩展方法正在返回List<int>.我想让它返回枚举值本身的列表.回归List<int>并不可怕; 这只是意味着我必须施展结果.

甚至可以这样做吗?我尝试使扩展方法通用,但遇到了问题.这与我能够得到的一样接近:

using System;
using System.Linq;
using System.Collections.Generic;

public class Program
{
    public static void Main()
    {
        foreach (int biasCode in new BiasCode().Values())
        {
            DisplayEnum((BiasCode)biasCode);
        }
    }

    public static void DisplayEnum(BiasCode biasCode)
    {
        Console.WriteLine(biasCode);    
    }
}

public enum BiasCode
{
    Unknown,
    OC,
    MPP
}

public static class EnumExtensions
{
    public static List<int> Values(this Enum theEnum)
    {
        var enumValues = new List<int>();
        foreach (int enumValue …
Run Code Online (Sandbox Code Playgroud)

c# extension-methods enums

10
推荐指数
3
解决办法
6613
查看次数

为什么我的交易不会升级到DTC?

我的机器上禁用DTC.我的理解是这个代码应该失败,因为它在同一个事务中使用了两个数据上下文.那么,它为什么有用呢?(注意:我尝试使用.NET 3.5和.NET 4.0.)

using (TransactionScope transactionScope = new TransactionScope())
{
    UpdateEta();
    UpdateBin();

    transactionScope.Complete();
}
Run Code Online (Sandbox Code Playgroud)

以下是调用的DAL方法:

public static void UpdateBin(Bin updatedBin)
{
    using (DevProdDataDataContext dataContext = new DevProdDataDataContext(ConnectionString))
    {
        BinRecord binRecord = (from bin in dataContext.BinRecords
                               where bin.BinID == updatedBin.BinId
                               select bin).FirstOrDefault();

        binRecord.BinID   = updatedBin.BinId;
        binRecord.BinName = updatedBin.BinName;

        dataContext.SubmitChanges();
    }
}  

public static void UpdateEta(Eta updatedEta)
{
    using (DevProdDataDataContext dataContext = new DevProdDataDataContext(ConnectionString))
    {
        EtaRecord etaRecord = (from eta in dataContext.EtaRecords
                               where eta.ID == updatedEta.ID
                               select eta).FirstOrDefault();

        etaRecord.ID    = updatedEta.ID;
        etaRecord.Title …
Run Code Online (Sandbox Code Playgroud)

c# datacontext linq-to-sql

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

编辑变更集注释 - 保存已禁用

我需要找到我最近的变更集,以便我可以为每个变更集添加一些内容.

我尝试在源代码管理资源管理器中执行查看历史记录,但我没有看到按用户过滤该方法的方法.(如果我使用这种方法,我可以打开一个变更集并成功更改注释.但是,这很痛苦,因为它没有被用户过滤.)

我还尝试右键单击团队项目并执行查找 - >查找更改集.这会打开一个对话框,我可以在其中找到适合我的变更集.但是,保存按钮被禁用?为什么?

在此输入图像描述

如何启用保存按钮?或者,如果不能发生这种情况,我怎样才能找到我的变更集并在每条评论中添加一些数据?

tfs visual-studio tfs2010 visual-studio-2013

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