小编Gus*_*nti的帖子

TextBox焦点上的ListBoxItem选择

我有一个ListBox使用以下DataTemplate显示项目:

<DataTemplate x:Key="PersonTemplate" DataType="{x:Type DAL:ResultItem}" >
  <StackPanel Width="280" >
    <TextBox BorderThickness="0" IsReadOnly="True" Background="Transparent" Text="{Binding FullName1, Mode=OneWay}"/>
    ... 
  </StackPanel>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我使用透明,只读,无边框TextBox而不是TextBlock,因为我希望用户能够选择要复制的文本.我应该采用不同的方式吗?我怎么写这个,这样当用户点击TextBox时,ListBoxItem也会被选中?

谢谢!

wpf textbox listbox selection

12
推荐指数
1
解决办法
5922
查看次数

WPF - DataTemplates的参数?

我有一个ListBox显示员工的数据,如姓名,部门照片,徽章编号等.员工可能有不同的类型,如经理,员工,志愿者.我有3个独立的数据模板 - 每种类型一个.所有这些模板显示的数据基本相同,但呈现的方式不同.

根据登录应用程序图片的用户,徽章编号等可以显示也可以不显示.所以我有布尔属性 - CanSeePhotos,CanSeeBadgeNumbers等.所以如果CanSeePhotos == false,所有数据模板都应该隐藏照片.

我的问题是,如何在我的数据模板中使用这些布尔属性来切换相应项目的可见性?当我从TemplateSelector返回参数时,有没有办法将参数传递给数据模板?

谢谢!

编辑:跟随雷的想法我最终做到了这一点:

Visibility="{Binding Source={x:Static local:Global.CanSeePhoto}, Converter={StaticResource BooleanToVisibilityConverter}}"
Run Code Online (Sandbox Code Playgroud)

wpf datatemplate

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

WPF内存使用情况

应用:

  • WPF应用程序由顶部的文本框和下面的列表框组成
  • 用户在TextBox中键入字符串以查找员工,搜索结果显示在ListBox中
  • ListBox使用DataTemplates显示元素(显示员工姓名,部门,电话和缩略图.)

执行:

  • 在应用程序启动时,我查询数据库并检索要在ListBox中显示的所有员工和相关信息.这一直保存在内存中.
  • 应用程序启动后,所有可搜索的数据都在内存中,搜索几乎是即时的.所有搜索都在内存中的数据上执行.
  • 搜索结果使用DataTemplates显示在ListBox中.缩略图图片,名称,电话,部门等显示在每个ListBox项目中.

问题:

  • 启动时,内存使用量约为200MB.
  • 随着列表框中的数据更改,无论是通过新搜索还是简单地向下滚动列表框,内存消耗都会增加.
  • 当用户慢慢向下滚动列表框时,内存增加得更快.当你上下滚动时,内存很快会达到1GB.

没有代码手动创建控件 - 一切都是通过数据绑定完成的.

为什么我看到这种行为?我该怎么办才能修复它?请帮忙!

更新:我发现问题不是内存泄漏.这里的问题是列表框正在创建对象以显示员工的图像,并且在listboxitem离开窗口后不会为垃圾收集器发布.CleanUpVirtualizedItem事件按我的预期发生,但内存仍未释放.有任何想法吗?

wpf performance memory-management listbox datatemplate

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

实体框架 - "全部"方法

所有的方法应该评估对列表中的所有元素的说法.它在常规Linq中运行正常,但是当我尝试将它与EF一起使用时,它会抛出一个错误(" 无法创建类型为'闭包类型'的常量值.此处仅支持基本类型(例如Int32,String和Guid)上下文. ")

例:

var myList = from person in entities.People
             where searchList.All(arg => arg == arg).ToList();
Run Code Online (Sandbox Code Playgroud)

(arg == arg这里只是为了说明我的问题)

在我的场景中,searchList是包含搜索项的列表,例如"John","Accounting","75".在我的EF查询中,我想检索人员中的所有记录,其中John,Accounting和75出现在某些指定的可搜索字段中.一个更现实的例子是这样的:

where SearchList.All((person.FirstName + " " + person.LastName + " " + person.DepartmentName + " " + person.Phone).Contains)
Run Code Online (Sandbox Code Playgroud)

第二个例子在内存中也适用于Linq,但EF不喜欢它.

请帮忙!我能做些什么才能让它发挥作用?

这是一个来自我的另一个问题的更具体的问题.

示例代码:

IEnumerable<string> searchList = ParseSearchText(searchText); //search text is broken into search tokens - each token is an element in searchList. For instance "John", "Sales", "654"

var peopleQuery = from person in entities.vSearchPeople
where …
Run Code Online (Sandbox Code Playgroud)

linq linq-to-entities entity-framework

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

SSRS - 如何构建简单的多列报告?

我是SSRS的新手,请原谅我的新手.我正在使用Sql Server 2008,我想从报表中多列的表中显示1个单个字段.就像我打印标签一样.我怎样才能做到这一点?

示例:

而不是打印:

姓名报告

Andrea
Austin
Barbara
Bob
Bruno
Cathy
Chis
...

我想在列中打印(比如3个固定列):

姓名报告

Andrea ---- Bruno ---- Darren
Austin ---- Cathy ---- Francis
Barbara ---- Chis ---- Gabriel
Bob ---- David ---- Gerald
...... .---- ....... ---- .......

编辑:如果我运行报告并单击"打印布局"按钮,我可以看到多个列.我可以将此模式设置为默认模式吗?

reporting-services

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

WPF - 在App.xaml的Build Action = Page时,在设计时访问资源

我将App.xaml的构建操作更改为"页面",因此我可以处理启动画面并确保我的应用程序仅作为单个实例运行(具有我自己的入口点).它在运行时工作正常,但在设计时,应用程序无法再查看我的资源.资源位于同一项目中的单独xaml文件中.如何让我的应用再次在设计时看到资源?

谢谢

wpf resources

7
推荐指数
2
解决办法
5192
查看次数

Click-Once - 如何加密连接字符串

我有一个WPF应用程序,其中的连接字符串存储在App.config中.在一次点击部署中加密这些连接字符串的最佳方法是什么?

谢谢

.net encryption wpf clickonce connection-string

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

WPF ComboBox - 在选择值时显示不同的内容

我需要完成的是一个显示People的ComboBox.当您展开下拉列表时,它会显示FirstName和LastName,但是当您选择一个人时,组合框中显示的值应该只是该人的名字.

我有以下ItemTemplate:

<ComboBox.ItemTemplate>
    <DataTemplate>
        <StackPanel Orientation="Horizontal">
            <TextBlock Text="{Binding FirstName}" />
            <TextBlock Text=" " />
            <TextBlock Text="{Binding LastName}" />
        </StackPanel>
    </DataTemplate>
</ComboBox.ItemTemplate>
Run Code Online (Sandbox Code Playgroud)

当选择一个项目时,我还应该做什么才能显示第一个名字?

谢谢!

编辑

稍微改变了一个问题:如果我有人的照片而不是在选择一个人时只显示第一个名字怎么办,我只想显示照片.换句话说,我怎样才能有两个单独的模板 - 一个用于下拉列表,另一个用于所选项目?

data-binding wpf combobox

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

iTextSharp - 如何将文档转换为byte []

我需要将我在内存中创建的pdf附加到电子邮件中.附件可以采取流程.所以我认为我需要将iTextSharp Document对象转换为流.我怎样才能做到这一点?我尝试将Document对象序列化为流,但它没有"标记为可序列化".

c# pdf stream itext

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

WPF - 同步动画

我有这样的东西:

scaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, shrinkAnimation);
scaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, shrinkAnimation);
MyDialog.Show();
Run Code Online (Sandbox Code Playgroud)

动画并行正确运行(x和y缩小在一起),但由于BeginAnimation是异步调用,因此Show()在动画仍在运行时执行该方法(假设shrinkAnimation运行1秒).

在打电话之前,我该如何等待动画完成Show()

谢谢!

c# wpf animation synchronous

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