我正在将WinForms项目的一部分迁移到WPF中.
我想将现有的WinForms用户控件添加到WPF表单中.WinForm用户控件称为"TicketPrinter",与WPF表单位于同一项目中.
在我的xaml中,我有这一行:
xmlns:Printers="clr-namespace:Project.UserControls.Printers"
Run Code Online (Sandbox Code Playgroud)
然后我在我的xaml中使用它:
<WindowsFormsHost Height="430" HorizontalAlignment="Left" Margin="468,12,0,0" Name="windowsFormsHost1" VerticalAlignment="Top" Width="324">
<Printers:TicketPrinter Printers:Name="ZapTicketPrinter">
</Printers:TicketPrinter>
</WindowsFormsHost>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
当我运行项目时,用户控件将按预期显示在窗体上.
但是当我进入xaml.cs文件后面的代码并尝试访问"ZapTicketPrinter"时,它不能作为参考.
即
我尝试使用ZapTicketPrinter并且无法识别.
我也尝试过以下方法:
TicketPrinter ticketPrinter = this.FindName("ZapTicketPrinter") as TicketPrinter;
Run Code Online (Sandbox Code Playgroud)
但得到一个空
我错过了什么?如何在代码中引用该名称?
当我通过用最新版本覆盖它来更新客户服务器上运行的ASP.NET网站[注意:它不是Web应用程序]时,它会将所有用户关闭.
我希望能够在不启动用户的情况下提供新版本的网站 - 有没有办法尽量减少用户被开除的机会?[除了显而易见的等待低使用时间]
如果我从InProc转移到会话状态,我想这可能会有所作为 - 但还有其他方法吗?
我想覆盖存储在app.config中的客户端WCF端点地址,以便我可以将它们从指向"localhost"更改为指向生产URL [取决于可以在App中设置的配置(包含在对象'appConfig'中)在下面显示的代码中) - 这是一个WinForms项目.
通过阅读该领域的其他问题,我已经达到了以下代码片段(InitAllEndpoints调用InitEndpoint),我从Form_Load事件中调用了这些代码.我在我的应用程序中尝试了这些,如果我将鼠标悬停在"ep"变量中的值上,它们似乎会更改EndPoint地址.然而,如果我在代码之后再次循环通过serviceModelSectionGroup.Client.Endpoints,我发现它们实际上没有变化.(我现在读到EndPoint地址是不可变的 - 所以我的代码看起来都不对,因为我希望用新的EndPoint地址对象覆盖地址 - 而不是Uri?)
如何以编程方式覆盖客户端app.config WCF端点地址?
private void InitAllEndpoints()
{
ServiceModelSectionGroup serviceModelSectionGroup =
ServiceModelSectionGroup.GetSectionGroup(
ConfigurationManager.OpenExeConfiguration(
ConfigurationUserLevel.None));
if (serviceModelSectionGroup != null)
{
foreach (ChannelEndpointElement ep in serviceModelSectionGroup.Client.Endpoints)
{
InitEndpoint(ep,
appConfig.ExternalComms_scheme,
appConfig.ExternalComms_host,
appConfig.ExternalComms_port);
}
}
}
private void InitEndpoint(ChannelEndpointElement endPoint, string scheme, String host, String port)
{
string portPartOfUri = String.Empty;
if (!String.IsNullOrWhiteSpace(port))
{
portPartOfUri = ":" + port;
}
string wcfBaseUri = string.Format("{0}://{1}{2}", scheme, host, portPartOfUri);
endPoint.Address = new Uri(wcfBaseUri + endPoint.Address.LocalPath);
}
Run Code Online (Sandbox Code Playgroud)
注意:我的代理服务器位于一个单独的项目/ DLL中.
例如 …