小编Jas*_*ams的帖子

带有ItemsControl和Grid的WPF动态布局

我正在创建一个WPF表单.其中一个要求是它具有基于扇区的布局,以便可以将控件明确地放置在扇区/单元之一中.

我在下面创建了一个tic-tac-toe示例来表达我的问题:

有两种类型和一种基本类型:

public class XMoveViewModel : MoveViewModel
{
}
public class OMoveViewModel : MoveViewModel
{
}
public class MoveViewModel
{
    public int Row { get; set; }
    public int Column { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

表单的DataContext设置为以下实例:

public class MainViewModel : ViewModelBase
{
    public MainViewModel()
    {
        Moves = new ObservableCollection<MoveViewModel>()
        {
            new XMoveViewModel() { Row = 0, Column = 0 },
            new OMoveViewModel() { Row = 1, Column = 0 },
            new XMoveViewModel() { Row = 1, Column = 1 …
Run Code Online (Sandbox Code Playgroud)

wpf grid dynamic itemscontrol wpf-controls

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

WPF绑定和动态分配StringFormat属性

我有一个基于几个DataTemplate元素生成的表单.其中一个DataTemplate元素从类中创建一个TextBox,如下所示:

public class MyTextBoxClass
{
   public object Value { get;set;}
   //other properties left out for brevity's sake
   public string FormatString { get;set;}
}
Run Code Online (Sandbox Code Playgroud)

我需要一种方法将FormatString属性中的值"绑定"到绑定的"StringFormat"属性.到目前为止,我有:

<DataTemplate DataType="{x:Type vm:MyTextBoxClass}">
 <TextBox Text="{Binding Path=Value, StringFormat={Binding Path=FormatString}" />
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

但是,由于StringFormat不是依赖项属性,因此无法绑定它.

我的下一个想法是创建一个值转换器并在ConverterParameter上传递FormatString属性的值,但我遇到了同样的问题 - ConverterParameter不是DependencyProperty.

所以,现在我转向你,所以.如何动态设置绑定的StringFormat; 更具体地说,在TextBox上?

我更愿意让XAML为我工作,这样我就可以避免使用代码隐藏.我正在使用MVVM模式,并希望尽可能不模糊视图模型和视图之间的界限.

谢谢!

wpf binding dynamic string-formatting

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

将Authenticode与ClickOnce WPF应用程序一起使用

好吧,我做的不对,我需要一些帮助.这是发生了什么:

  1. 我收到了Comodo的"真实"Authenticode证书,我付了钱.
  2. 我正在尝试签署和部署用Visual Studio 2012和.NET 4.5编写的WPF应用程序.
  3. 在项目的属性中,我检查了"签署ClickOnce清单"并选择了我的证书.
  4. 我也在使用Comodo的时间戳服务器(http://timestamp.comodoca.com/authenticode)
  5. 在"发布"选项卡和"先决条件"按钮下,我选中了"创建安装程序以安装必备组件".

当我构建和发布时,一切正常!setup.exe是用我的Comodo证书签名的,所以这很好.此外,该.application文件使用Comodo证书签名,我的公司名称显示为发布者 - 这也很好.

问题出现了:将应用程序下载到客户端后,Windows 8会发出有关不受信任程序(MyProgram.exe)的警告,并且发布者不是我的公司名称.因此,除了实际的可执行文件之外,一切都已签名.

我已经尝试添加在obj\Release\MyProgram.exe上使用signtool.exe的后期构建脚本,但是当我尝试安装应用程序时,我收到一个清单错误,指出哈希值不匹配.换句话说,清单是在构建后事件之前生成的.

如何签署我的.exe并维护ClickOnce清单的完整性?有没有一种简单的方法可以做到这一点,还是我必须手动使用mage.exe(我希望不是)?

wpf clickonce authenticode

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

在WinForms中托管IE 8并打开PDF

我们有一个托管WebBrowser控件的表单.这是表单上唯一的控件.

我们将表单传递给临时PDF文件的文件路径,它确实:

WebBrowser1.Navigate(Me._PathToPdf)
Run Code Online (Sandbox Code Playgroud)

当表单关闭时,它将导航离开PDF文件:

WebBrowser1.Hide()
WebBrowser1.Navigate("about:blank")

Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
    Application.DoEvents()
    System.Threading.Thread.Sleep(50)
Loop
Run Code Online (Sandbox Code Playgroud)

表单关闭后,调用类将删除临时PDF文件.

这个过程很有效......直到我们安装了Internet Explorer 8.出于某种原因,IE8和Adobe Acrobat 8​​(或9)的组合会在临时PDF文件上放置一个额外的文件锁定句柄.在整个应用程序关闭之前,额外的锁定句柄不会消失.我还要提一下,在Acrobat打开文件之前,文件上没有锁.

我们可以在多台机器上重现这一点,它始终是IE8和Adobe Acrobat Reader的结合.我们可以安装福昕阅读器3而不是Adobe Acrobat,一切正常.同样,我们可以在使用IE7和Adobe Acrobat的机器上运行应用程序,并且工作正常.但是,当你混合使用IE 8的魔法药水和Acrobat时,你最终会弄得一团糟.

任何人都可以告诉我为什么我得到一个额外的文件锁,一直持续到应用程序结束?

谢谢.

可以在此处找到演示我的问题的示例应用程序:PDFLockProblemDemo.zip

c# vb.net acrobat file internet-explorer-8

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