小编Rac*_*hel的帖子

使用XML序列化时的循环引用?

尝试使用XMLSerialization序列化对象时,我收到以下异常.

A circular reference was detected while serializing an object of type MyObject}

我知道循环引用是因为ObjectA可以有一个childObjectObjectB而ObjectB parentObject是ObjectA,但是如果可能的话我想保留该引用.有没有办法让这个对象在XML序列化中序列化而不会在序列化过程中丢失任何数据?我对序列化并不熟悉,所以我希望我能设置一些属性.

c# serialization

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

有没有理由将POCO变成Model对象?

如果我从EntityFramework生成POCO对象,并使用这些对象进出WCF服务器,是否有任何理由为Views&ViewModels创建客户端模型而不是直接使用POCO?

我所看到的几乎所有MVVM示例都直接绑定到从WCF服务返回的对象.这是好习惯吗?是否存在可以将POCO实际映射到模型并使Views/ViewModel与Model对象而不是POCO一起工作的参数?

我能想到的主要原因是验证,但由于EF POCO是部分类,因此可以扩展它们以包括验证.

编辑

到目前为止,大多数答案都是INotifyPropertyChanged构建单独模型的主要原因.如果您使用自我跟踪实体而不是已包含的POCO,您的答案是否会改变INotifyPropertyChanged?STE也是部分类,可以扩展到包括验证.

wpf wcf entity-framework poco mvvm

20
推荐指数
2
解决办法
2231
查看次数

WPF TabControl - 阻止更改选项卡上的卸载?

当WPF选项卡控件中的选项卡更改时,有没有办法阻止选项卡卸载/重新加载?或者,如果不可能,是否有建议的方法来缓存选项卡内容,以便不必在每次更改选项卡时重新生成它们?

例如,一个选项卡的UI可完全自定义并存储在数据库中.当用户选择要处理的对象时,自定义布局中的项目将填充该对象的数据.用户期望初始加载或检索数据时会有轻微延迟,但在选项卡之间来回切换时则不会,并且更改选项卡时的延迟非常明显.

wpf caching tabcontrol

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

我可以将DIV始终保留在屏幕上,但并不总是处于固定位置吗?

我有一个我的网站的主表单,我想将div停靠在主表单内的内容区域的顶部.尽管滚动位置,此div仍应始终可见.这可能吗?

一张图片可以更好地解释它.

在此输入图像描述

html css css-float

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

为什么在将Label.Content绑定到非字符串而不是字符串时会应用隐式TextBlock样式?

我正在查看这个问题,并发现绑定Label.Content到非字符串值将应用隐式TextBlock样式,但是绑定到字符串则不会.

以下是重现问题的示例代码:

<Window.Resources>
    <Style TargetType="Label">
        <Setter Property="FontSize" Value="26"/>
        <Setter Property="Margin" Value="10"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
    </Style>
    <Style TargetType="{x:Type TextBlock}">
        <Setter Property="FontSize" Value="26"/>
        <Setter Property="Margin" Value="10"/>
    </Style>
</Window.Resources>

<Grid>
    <StackPanel Orientation="Horizontal">
        <Label Content="{Binding SomeString}" Background="Red"/>
        <Label Content="{Binding SomeDecimal}" Background="Green"/>
    </StackPanel>
</Grid>
Run Code Online (Sandbox Code Playgroud)

绑定值的代码是

SomeDecimal = 50;
SomeString = SomeDecimal.ToString();
Run Code Online (Sandbox Code Playgroud)

最终结果如下所示,Margin隐式TextBlock样式的属性应用于仅绑定到非字符串的Label:

在此输入图像描述

两个标签都呈现为

<Label>
    <Border>
        <ContentPresenter>
            <TextBlock />
        </ContentPresenter>
    </Border>
</Label>
Run Code Online (Sandbox Code Playgroud)

当我使用Snoop检查VisualTree时,我可以看到它对于两个元素看起来完全相同,除了第二个TextBlock从隐式样式应用Margin,而第一个没有.

在此输入图像描述

我已经使用Blend来提取默认标签模板的副本,但是没有看到任何奇怪的东西,当我将模板应用于我的两个标签时,同样的事情发生了.

<Label.Template>
    <ControlTemplate TargetType="{x:Type Label}">
        <Border BorderBrush="{TemplateBinding BorderBrush}" 
                BorderThickness="{TemplateBinding BorderThickness}" 
                Background="{TemplateBinding Background}" 
                Padding="{TemplateBinding …
Run Code Online (Sandbox Code Playgroud)

wpf label styles implicit-style

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

如何仅使CommonOpenFileDialog选择文件夹,但仍显示文件?

我使用Microsoft的CommonOpenFileDialog来允许用户选择文件夹,但是当对话框出现时没有文件可见.当IsFolderPicker设置为true 时,是否可以显示文件和文件夹?

我目前的代码看起来像这样

var dialog = new CommonOpenFileDialog();
dialog.IsFolderPicker = true;

if (dialog.ShowDialog() == CommonFileDialogResult.Ok)
{
    SelectedFolderPath = dialog.FileName;
}
Run Code Online (Sandbox Code Playgroud)

c# openfiledialog windows-api-code-pack

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

在关注性能时,使用DateTime.Today的变量有多重要?

我刚看到这个赞成的评论

IIRC DateTime.Today是一个相当昂贵的调用,因此您最好先将值存储在变量中.

这是对包含代码的帖子的回应:

var first = 
    new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddMonths(-1);
var last = 
    new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1).AddDays(-1);
Run Code Online (Sandbox Code Playgroud)

如果我希望提高性能,那么存储DateTime.Today在变量中而不是多次调用它有多重要?大致有多少用途DateTime.Today可以证明为它创建一个变量?

编辑:我意识到我应该测试我的程序,看看是否存在性能问题,然后再担心像这样微不足道的事情.为了这个问题,假设我已经这样做并确定需要进行额外的优化.

c# performance datetime

15
推荐指数
2
解决办法
1200
查看次数

在代码后面应用Grid Star Size

如何以编程方式构造这段XAML?

<Grid Name="gridMarkets">
    <Grid.RowDefinitions>
        <RowDefinition Height="10" />
        <RowDefinition Height="*" MinHeight="16" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="10" />
        <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
 </Grid>
Run Code Online (Sandbox Code Playgroud)

它是动态解析和构造控件的优雅解决方案吗?

我想做点什么:

RowDefinition newRow = new RowDefinition();
newRow.Height = new GridLength(10);
newGrid.RowDefinitions.Add(newRow);
Run Code Online (Sandbox Code Playgroud)

但是我该如何指定*标志?

寻找任何一种想法来解决这个问题!谢谢!

c# wpf

14
推荐指数
3
解决办法
2万
查看次数

动态地将行/列添加到网格中

我有一个孩子,UserControl包括多个文本框,标签,图像等.我需要在具有网格的父用户控件中填充此用户控件.

需要在父用户控件中填充的子用户控件的数量在运行时确定,并且可以更改.基本上,数量取决于搜索结果.所以它可以从0到n.

如何在父控件中填充我的子用户控件?或者是否有更好的替代方法来使用网格控件?

注意:我必须在我的ViewModel中执行此操作.

wpf grid xaml user-controls dynamic

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

为什么会覆盖.GetHashCode在WinForms中清除这些数据绑定值?

我们遇到了一个奇怪的错误,我们在调试时遇到了问题.

我们有一个使用Microsoft CAB,DevExpress组件和.Net 3.5的MDI工作区.

如果用户在工作区中打开两个窗口,每个窗口包含UserControl绑定到两个单独的数据模型,然后最小化它们,则第一个最小化窗口是在第二个窗口最小化时清除它的绑定字段.

.Equals.GetHashCode数据模型的方法已被重写,使两者的数据模型被认为是相等的.如果我们改变它以使它们是唯一的,我们就不会得到这种行为.

这是一些显示问题的示例伪代码

var a = new MyWindow();
a.DataModel = new SomeClass(123);
a.ShowInMdiWorkspace();

var b = new MyWindow();
b.DataModel = new SomeClass(123);
b.ShowInMdiWorksace();

a.Minimize();

// If SomeClass.GetHashCode() is overwritten to consider two objects  
// as equal based on the value passed in, then the data bindings for A
// get cleared on this call. If SomeClass.GetHashCode is unique, then 
// this problem does not happen.
b.Minimize();
Run Code Online (Sandbox Code Playgroud)

这是第二个窗口最小化时的调用堆栈:

在此输入图像描述

EndEditSession()堆栈中的呼叫跟踪上面,它被调用 …

c# mdi devexpress .net-3.5 winforms

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