小编vit*_*dev的帖子

用Unity填充集合的方法

我有两个示例类

class ClassToResolve
{
    private List<CollectionItem> _coll;

    public ClassToResolve(List<CollectionItem> coll)
    {
        _coll = coll;
    }
}

class CollectionItem
{
    //...
}
Run Code Online (Sandbox Code Playgroud)

我需要解决ClassToResolve

var classToResolve = new ClassToResolve(
            new List<CollectionItem>()
                {
                    new CollectionItem(),
                    new CollectionItem(),
                    new CollectionItem()
                }

            );
Run Code Online (Sandbox Code Playgroud)

现在我以某种方式解决它

var classToResolve = new ClassToResolve(
            new List<CollectionItem>()
                {
                    unity.Resolve<CollectionItem>(),
                    unity.Resolve<CollectionItem>(),
                    unity.Resolve<CollectionItem>()
                }
            );
Run Code Online (Sandbox Code Playgroud)

有没有办法使用动态注册解析ClassToResolve?

.net c# dependency-injection inversion-of-control unity-container

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

Datagrid.IsSelected绑定和滚动

我使用MVVM,并使用一些代码将datagrid绑定到集合:

<DataGrid ItemsSource="{Binding Entites}" AutoGenerateColumns="False" IsSynchronizedWithCurrentItem="True" 
                  SelectedItem="{Binding SelectedEntity}">
Run Code Online (Sandbox Code Playgroud)

我也使用样式(RowStyle或ItemContainerStyle)使用绑定到IsSelectedProperty

<DataGrid.RowStyle>
        <Style>
              <Setter Property="DataGridRow.IsSelected" Value="{Binding IsSelectedProperty, Mode=TwoWay}" />                        
        </Style>
</DataGrid.RowStyle>
Run Code Online (Sandbox Code Playgroud)

它运作良好.但是如果我向下和向上滚动数据网格,它就会停止工作.

c# wpf datagrid mvvm selected

13
推荐指数
3
解决办法
6950
查看次数

语言解析器和字符转义

我还没有找到一个例子 - 如何处理字符转义。我找到了一个代码示例:

static void Main(string[] args)
{
    string text = "'test \\\' text'";
    var result = Grammar.QuotedText.End().Parse(text);
}

public static class Grammar
{
    private static readonly Parser<char> QuoteEscape = Parse.Char('\\');
    private static Parser<T> Escaped<T>(Parser<T> following)
    {
        return from escape in QuoteEscape
               from f in following
               select f;
    }

    private static readonly Parser<char> QuotedTextDelimiter = Parse.Char('\'');

      private static readonly Parser<char> QuotedContent =
          Parse.AnyChar.Except(QuotedTextDelimiter).Or(Escaped(QuotedTextDelimiter));

    public static Parser<string> QuotedText = (
        from lquot in QuotedTextDelimiter
        from content in QuotedContent.Many().Text()
        from rquot in …
Run Code Online (Sandbox Code Playgroud)

.net c# parsing sprache

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