我正在创建一个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) 我有一个基于几个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模式,并希望尽可能不模糊视图模型和视图之间的界限.
谢谢!
好吧,我做的不对,我需要一些帮助.这是发生了什么:
当我构建和发布时,一切正常!setup.exe是用我的Comodo证书签名的,所以这很好.此外,该.application
文件使用Comodo证书签名,我的公司名称显示为发布者 - 这也很好.
问题出现了:将应用程序下载到客户端后,Windows 8会发出有关不受信任程序(MyProgram.exe)的警告,并且发布者不是我的公司名称.因此,除了实际的可执行文件之外,一切都已签名.
我已经尝试添加在obj\Release\MyProgram.exe上使用signtool.exe的后期构建脚本,但是当我尝试安装应用程序时,我收到一个清单错误,指出哈希值不匹配.换句话说,清单是在构建后事件之前生成的.
如何签署我的.exe并维护ClickOnce清单的完整性?有没有一种简单的方法可以做到这一点,还是我必须手动使用mage.exe(我希望不是)?
我们有一个托管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
wpf ×3
dynamic ×2
acrobat ×1
authenticode ×1
binding ×1
c# ×1
clickonce ×1
file ×1
grid ×1
itemscontrol ×1
vb.net ×1
wpf-controls ×1