我知道我可以使用静态ConfigurationManager.OpenExe(exePath)方法打开与程序集相关的配置文件,但我只想打开与程序集无关的配置.只是一个标准的.NET配置文件.
当UICollectionView填充了项目时,它们总是直接进入UICollectionView的边缘,如下所示:
---------------
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
|X X X X X X X|
---------------
Run Code Online (Sandbox Code Playgroud)
我想在每个边缘周围放一个边距,如下所示:
---------------
| X X X X X X |
| X X X X X X |
| X X X X X X |
| X X X X X X |
| …Run Code Online (Sandbox Code Playgroud) 我有一个服务应用程序,它在启动时读取XML文件并为XML文件中的每个条目启动一个线程.每个线程都会创建一个worker类的实例,该实例需要记录器将任何输出记录到特定于线程的日志文件中.
在服务app.config中,我将log4net配置设置设置为使用XML appender,并将文件指定为PatternString,如下所示:
<appender name="XmlAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="D:\Temp\Logs\%property{LogName}.log" />
<immediateFlush value="true"/>
<appendToFile value="true" />
<layout type="log4net.Layout.SimpleLayout" />
</appender>
Run Code Online (Sandbox Code Playgroud)
在创建的worker类的每个实例的线程锁定方法中,我使用该log4net.LogManager.GetLogger("MyLogger")方法获取记录器,然后使用设置当前线程PatternStrings LogName属性ThreadContext.Properties["LogName"] = "Log name prefix".
所有文件都已创建,但是当调用记录器时,它只会将所有消息记录到一个看似随机的文件中.
我已经搜索了很长一段时间试图找到一个解决方案或一些我做错的答案,但我没有运气.
有谁知道为什么会这样?
我已经使用Unity很长一段时间,但我一直使用它与构造函数注入.为了减少我必须注入到我的视图模型中的类的数量(因为我的命令依赖于它们),我想我会尝试创建一个使用Property Injection的概念,从而消除对大型构造函数参数列表的要求.这是场景......
我正在创建一个视图模型,其中的命令位于以某种方式使用/更新软件视图模型的属性上.我希望将View Model的实例传递给View Models属性上的Commands的构造函数.例如
public MainViewModel
{
public MainViewModel()
{
Customers = new ObservableCollection<CustomerViewModel>();
}
[Depedency("LoadCommand")]
public ICommand LoadCustomersCommand { get; set; }
public ObservableCollection<CustomerViewModel> Customers { get; private set; }
}
public LoadCustomersCommand : ICommand
{
public LoadCustomersCommand(MainViewModel mainViewModel)
{
//Store view model for later use
}
//... implementation
}
//Setup code in App.Xaml
IUnityContainer unityContainer = new UnityContainer();
unityContainer.RegisterType<ICommand, LoadCommand>("LoadCommand");
unityContainer.RegisterType<MainViewModel>(new ContainerControlledLifetimeManager());
Run Code Online (Sandbox Code Playgroud)
当我解析MainViewModel类时,我得到一个StackOverflow异常(如果Visual Studio完全回来的话).现在我希望Unity首先创建一个MainViewModel实例,因为它基本上是一个单例,然后查看View Model的实例并创建在新创建的MainViewModel中传递的Command,但显然我错了.
有任何想法吗?
我正在为我们的部门工作敲击WPF演示,向他们展示WPF的优势,同时努力遵守我们的开发标准(依赖注入和将对象开发到显式接口).
我现在来到了一堵墙.我正在使用MVVM设计模式实现View,每次更新View Model(VM)上的属性时,我都需要更新TextBlocks Text属性.为此,我将VM属性定义为依赖属性,并将View中的TextBlocks Text属性绑定到它.
现在MV属性在我的界面上,并且(根据我们的开发标准)明确定义.从视图中我将View中TextBlock的Text属性绑定到Dependency Properties属性(而不是静态部分),但是当依赖属性值更改时,这不会更新我的View(我知道如何绑定到显式接口,所以这就我所知,这不是问题).
真的很感激任何帮助.我可以使用具有显式接口的依赖项属性吗?如果我能怎么样,如果没有你对我在这种情况下能做些什么有任何想法?
感谢您阅读,我期待您的回复.
亚当