小编JiB*_*evé的帖子

在datagrid中使用group时,列会折叠

我有一个数据网格,在其中我显示了几个具有一些列的对象.我添加了对数据网格的分组,现在看起来它不像宽度为'*'的colulmns - 列都被折叠到它们的最小宽度.但是,当我刷新网格时(在添加元素或修改现有元素之后),我可以看到列刷新正常.奇怪的是,我调用相同的函数两次,第一次它不工作,而第二次它没有.

之前:

http://www.microage-dil.ca/SO/GridBefore.png

更新一次后

http://www.microage-dil.ca/SO/GridAfter.png 这是刷新功能:

Private Sub ListerDocuments()
    Dim lstCVDocuments As New ListCollectionView(_oLstDocuments)
    lstCVDocuments.GroupDescriptions.Add(New PropertyGroupDescription("TypeFichier"))

    GridDocuments.ItemsSource = lstCVDocuments
    GridDocuments.Items.Refresh()
End Sub
Run Code Online (Sandbox Code Playgroud)

现在数据网格:

<DataGrid x:Name="GridDocuments" Grid.Column="0" ItemsSource="{Binding}" Style="{StaticResource BaseGrid}"  IsTabStop="False">
    <DataGrid.GroupStyle>
        <GroupStyle>
            <GroupStyle.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
                        <TextBlock Text="{Binding Path=Name}" />
                    </StackPanel>
                </DataTemplate>
            </GroupStyle.HeaderTemplate>
            <GroupStyle.ContainerStyle>
                <Style TargetType="{x:Type GroupItem}">
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type GroupItem}">
                                <Expander>
                                    <Expander.Header>
                                        <StackPanel Orientation="Horizontal"  HorizontalAlignment="Stretch">
                                            <TextBlock Text="{Binding Path=Name}" FontWeight="Bold" />
                                        </StackPanel>
                                    </Expander.Header>
                                    <ItemsPresenter />
                                </Expander>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </GroupStyle.ContainerStyle>
        </GroupStyle>
    </DataGrid.GroupStyle>
    <DataGrid.Columns>                            
        <DataGridTextColumn …
Run Code Online (Sandbox Code Playgroud)

.net wpf grouping datagrid

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

.CreateObjectSet <T>,.Set <T>和.CreateQuery <T>之间的区别?

我正在为实体框架编写一个通用存储库,并对这些调用之间的区别感到困惑:

ObjectContext.CreateObjectSet<T>
ObjectContext.CreateQuery<T>
DbContext.Set<T>
Run Code Online (Sandbox Code Playgroud)

我想要一个通用的存储库,它既支持从.edmx文件生成的上下文,也支持代码第一个DbContext,所以我有这个:

 public abstract class EntityRepository<TClass>
   where TClass : class, new()
{
    //private readonly TContext _context;
    private readonly ObjectSet<TClass> _objectSet;

    protected EntityRepository(IObjectContextAdapter context)
    {
        _objectSet = context.ObjectContext.CreateObjectSet<TClass>();

    }

    protected EntityRepository(ObjectContext context)
    {
        _objectSet = context.CreateObjectSet<TClass>();
    }

    public ObjectSet<TClass> Query()
    {
        return _objectSet;
    }
}
Run Code Online (Sandbox Code Playgroud)

在我在网上看过的例子中,我看过所有使用过的3个,它们之间的实际差异是什么?一个更好的表现明智吗?我知道你可以使用所有3种方法针对上下文编写LINQ查询.

generics datacontext entity-framework

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

WPF样式基于当前

有没有办法创建一种扩展当前样式的样式,即不是特定的样式?

我有一个WPF应用程序,我创建样式来设置边框或验证等属性.

    <Style TargetType="{x:Type Button}"  
           BasedOn="{StaticResource {x:Type Button}}">
        <Setter Property="Padding" Value="5,2,5,2"/>
    </Style>
Run Code Online (Sandbox Code Playgroud)

现在我想尝试一些主题,看看哪一个最适合我的应用程序.问题是要做到这一点我需要将我所有样式的BasedOn属性更改为主题中的样式.

    <Style TargetType="{x:Type Button}"  
           BasedOn="="{x:Static ns:SomeTheme.ButtonStyle}">">
        <Setter Property="Padding" Value="5,2,5,2"/>
    </Style>
Run Code Online (Sandbox Code Playgroud)

我可以通过搜索/替换来做到这一点,但如果可以动态完成它会很好.

wpf xaml styles

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

在生产中调试应用程序

生产中出现了一些奇怪的错误,我们的自制应用程序用C#编写,框架3.5.应用程序是无记录的(我知道......),即使在事件查看器中,崩溃也不会为我们提供有用的信息.此外,存在时错误处理很差.

检查代码并在开发环境中搜索问题不是解决方案,因为我们不知道问题是什么.

我们想在生产环境中"调试"应用程序.我们正在梦想使用具有Visual Studio Debugger和ILSpy功能的工具.就是这样,用反汇编代码逐步执行.

那么,当我们没有日志或错误处理来调试生产中的应用程序时,有哪些解决方案?

c# debugging production-environment visual-studio

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

如何处理异常消息的翻译?

我真的不知道在多语言应用程序中处理异常的最佳方法.

我应该在哪里处理错误消息的翻译(Exception.Message)?

如果我抛出异常,我应该在ctor中翻译消息吗?

throw new MyException("Error message", Resource.MyException_TranslatedMessage);
Run Code Online (Sandbox Code Playgroud)

或者我抛出异常并使用自制帮助程序,它将使用View逻辑中的异常类型找到错误消息?

try
{
    //...
}
catch(Exception ex)
{
    myLabel.Text = new ExceptionTranslator(ex).Translate();
}
Run Code Online (Sandbox Code Playgroud)

或者,Microsoft是否提供了一个工具或机制来执行此操作?

总之一句:处理异常消息翻译的好方法是什么?

c# exception

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

Visual Studio的代码片段:如何在其中添加逻辑?

我已经制作了一个小代码片段来为WPF数据绑定创建一个属性:

private string property;
public string Property
{
    get { return this.property; }
    set
    {
        this.property = value;
        this.OnPropertyChanged(() => Property);
    }
}
Run Code Online (Sandbox Code Playgroud)

在Camel Case中创建字段名称并在Pascal Case中重写属性非常麻烦.有没有办法只写字段,让片段使用字母的名称写入属性,第一个字符是大写?

c# visual-studio-2010

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

如何在wpf中使用DateTimePicker绑定

在我的wpf应用程序中,在CustomView窗口中,以下是我声明的属性,

private DateTime starttime 
    {
        get
        {
            return DateTime.Parse(StartTimeText.Text); 
        }
        set
        {
            StartTimeText.Text = value.ToString();
            OnPropertyChanged("starttime");
        } 
    }

    private DateTime stoptime
    {
        get
        {
            return DateTime.Parse(StopTimeText.Text);
        }
        set
        {
            StopTimeText.Text = value.ToString();
            OnPropertyChanged("stoptime");
        }
    }

protected virtual void OnPropertyChanged(String time)
    {
        if (System.String.IsNullOrEmpty(time))
        {
            return;
        }
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(time));
        }
    }

public event PropertyChangedEventHandler PropertyChanged;
Run Code Online (Sandbox Code Playgroud)

在xaml中,

<DatePicker x:Name="StartTimeText" 
            SelectedDate="{Binding Path=starttime}"  
            BorderThickness="0" 
            Background="Yellow"
            Width="100"/>

<DatePicker x:Name="StopTimeText" 
            SelectedDate="{Binding Path=stoptime, Mode=TwoWay}" 
            BorderThickness="0" 
            Background="Yellow"
            Width="60"/>
Run Code Online (Sandbox Code Playgroud)

通过这种方式,我在启动时和停止时间控件中获取日期.但我希望时间用"hh:mm tt"格式.WPF工具箱中没有DateTimePicker控件.所以为了获得指定格式而不是日期的时间,我该怎么办?请建议.

c# wpf xaml binding datepicker

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

PlatformNotSupportedException 在 WP 中使用 Dapper 时抛出

DEBUG完美地执行 UWP 应用程序。

使用在RELEASE崩溃中编译的完全相同的代码与此错误消息

System.PlatformNotSupportedException: 
    'Dynamic code generation is not supported on this platform.'
Run Code Online (Sandbox Code Playgroud)

执行此代码时(它使用Dapper 1.5.1and System.Data.SQLite 1.0.109.2

using (var c = NewConnection())
{
    var sql = @"
        update settings
        set
            ""value"" = @SetDate
        where ""key"" = 'week_date'";
    c.Execute(sql, new { SetDate = date }); //<= throws PlatformNotSupportedException 
                                            // only on RELEASE not in DEBUG
}
Run Code Online (Sandbox Code Playgroud)

该应用程序是 UWP 配置如下。此外,故障代码是一个.NET Standard 2.0 Class Library

在此处输入图片说明

为什么它RELEASE只会崩溃以及如何修复它?

c# dapper uwp

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

使用DTO和WPF时是否需要实现INotifyPropertyChanged?

我的问题相当简单,已在标题中提出.

这是上下文:我有一个包含实体和存储库的域.查询结果映射到DTO并发送到GUI.

GUI是用WPF实现的,对于映射,我需要实现INotifyPropertyChanged的类.

我的第一个想法是让DTO实现这个接口,因为我预见到很多工作要将我的DTO再次映射到实现INotifyPropertyChanged的项目.

这是一个好习惯吗?有没有陷阱我还没见过?这种情况的"官方"良好做法是什么?

c# wpf dto

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

只读字段是公开的吗?

我有一个带有只读字段的类,表示我的对象的状态.这些字段应该从外面可见.

起初我用properties这样显示这些字段:

public class MyClass
{
    private readonly MyState mystate = new MyState();
    public MyState MyState { get { return this.mystate; } }
}
Run Code Online (Sandbox Code Playgroud)

但就像这样readonly,我班级的用户无法改变状态的实例.因此,我删除了我property,将readonly字段设置为public并在Pascal Case中重命名.

到目前为止,我看到的唯一问题是重构,但正如我public property在像我这样的骆驼案例中public readonly,我可以将它property无缝地移动.

Jimmy可以搞砸我的对象(不修改代码)或者使用它更安全property吗?

c# properties

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