我目前在我的应用程序中有一个app.config,如下所示:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="DeviceSettings">
<section name="MajorCommands" type="System.Configuration.DictionarySectionHandler"/>
</sectionGroup>
</configSections>
<appSettings>
<add key="ComPort" value="com3"/>
<add key="Baud" value="9600"/>
<add key="Parity" value="None"/>
<add key="DataBits" value="8"/>
<add key="StopBits" value="1"/>
<add key="Ping" value="*IDN?"/>
<add key="FailOut" value="1"/>
</appSettings>
<DeviceSettings>
<MajorCommands>
<add key="Standby" value="STBY"/>
<add key="Operate" value="OPER"/>
<add key="Remote" value="REMOTE"/>
<add key="Local" value="LOCAL"/>
<add key="Reset" value="*RST" />
</MajorCommands>
</DeviceSettings>
</configuration>
Run Code Online (Sandbox Code Playgroud)
我目前的目标是预先或简单地将MajorCommands中的所有值读取为Dictionary<string, string>格式化为Dictionary<key, value>.我已经尝试了几种使用System.Configuration的不同方法,但似乎没有工作,我无法找到任何细节我的确切问题.有没有正确的方法来做到这一点?
我最近一直在使用SerialPort类.目前我正在试图找出检查设备是否连接到我的应用程序使用的comm端口的正确方法.有没有正确的方法来检查设备是否连接到通信端口?我目前的方法如下:
while (isReading == true)
{
try
{
received += serialPort.ReadExisting();
if (received.Contains('>'))
isReading = false;
}
catch (Exception e)
{
}
if (tick == 10000)
if (received == "")
{
Console.WriteLine("No Data Received. Device isn't connected.");
isReading = false;
}
tick++;
}
Console.WriteLine(received);
Run Code Online (Sandbox Code Playgroud)
它有效,但我觉得它有点hacky和不可靠.如果需要,我可以保留它,但是如果有适当的替代方法,我会喜欢它.
编辑:我实际上必须将刻度值设置为大约10,000,以确保它是可靠的.否则我偶尔会收到数据.即使将其设置为1000或5000也是不可靠的.即使这样,也不能保证在多台机器上可靠.
有人可以帮我解释一下MVVM Light的Messenger吗?我在这里阅读StackOverflow上的一篇文章:MVVM在试图得到这个的视图模型之间传递值.关于MVVM Light的文档在这一点上并不是那么好,所以我完全不确定去哪里.
假设我有两个ViewModel和一个ViewModelLocator.我希望能够在没有问题的情况下在所有三个之间传递参数.我将如何与信使一起做这件事?它有能力做到吗?
编辑:这是我的新实现.截至目前,看起来好像MessengerInstance没有调用令牌.我非常困惑.
在第一个ViewModel中:
MessengerInstance.Send<XDocument>(SelectedDocument);
Run Code Online (Sandbox Code Playgroud)
在第二个:
MessengerInstance.Register<XDocument>(this, xdoc => CopySettings(xdoc));
Run Code Online (Sandbox Code Playgroud)
可能完全错了.没有机会测试它,但当我这样做时,视觉工作室对我不那么生气了.MessengerInstance也会在发送消息之前进行注册.
我正在尝试创建一个小程序,使用Excel模板创建Excel文档,然后使用EPPlus写入多个单元格.不幸的是,无论我尝试什么,文件似乎都是腐败的.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OfficeOpenXml;
using System.IO;
namespace ConsoleApplication9
{
public sealed class ExcelSerialize
{
private readonly List<Tuple<string, string>> Results;
private readonly string Directory;
private ExcelPackage package;
public ExcelSerialize(List<Tuple<string, string>> Results, string Directory)
{
this.Results = Results;
this.Directory = Directory;
}
public bool WriteResults()
{
FileInfo template = new FileInfo(Directory);
using (package = new ExcelPackage(template, true))
{
ExcelWorksheet worksheet = package.Workbook.Worksheets[1];
//foreach (Tuple<string, string> …Run Code Online (Sandbox Code Playgroud) 我目前正在使用MVVM Light Toolkit并在WPF C#中创建一个应用程序.我目前在我的XAML中有一个ComboBox,如下所示:
<ComboBox Height="23" HorizontalAlignment="Left" Margin="367,39,0,0" Name="comboBox1" VerticalAlignment="Top" Width="156" ItemsSource="{Binding Combo_Major_Commands}"/>
Run Code Online (Sandbox Code Playgroud)
并在代码中:
private Dictionary<string, string> _combo_Major_Commands;
public Dictionary<string, string> Combo_Major_Commands
{
get { return _combo_Major_Commands; }
private set;
}
Run Code Online (Sandbox Code Playgroud)
现在在我的运行时代码中我初始化它并添加我需要的项目,如下所示:
_combo_Major_Commands = new Dictionary<string, string>();
_combo_Major_Commands.Add("Standby", "STBY");
_combo_Major_Commands.Add("Operate", "OPER");
_combo_Major_Commands.Add("Remote", "REMOTE");
_combo_Major_Commands.Add("Local", "LOCAL");
Run Code Online (Sandbox Code Playgroud)
有没有办法将我的ComboBox绑定到键值?目前它绑定到整个值并显示以下内容
[Standby, STBY]
Run Code Online (Sandbox Code Playgroud)
在组合框中.
正如标题所说,为什么C#中的Dictionary集合包含.Distinct()扩展名,就好像Dictionary可能包含非不同的键一样?这背后有合理的推理还是我读得太过分了?
前段时间我问了一个问题:使用MVVM Light的Messenger在View Model之间传递值
我今天去测试答案,但似乎没有起作用.我的实现如下:
MessengerInstance.Send(SelectedDocument, Model.StaticEnums.Tokens.SettingstoMain);
Run Code Online (Sandbox Code Playgroud)
和:
MessengerInstance.Register<XDocument>(this, Model.StaticEnums.Tokens.SettingstoMain, settings => CopySettings(settings));
Run Code Online (Sandbox Code Playgroud)
我的问题是,这种实现不起作用.相反,MessengerInstance.Send和MessengerInstance.Register的参数似乎与答案中的实现明显不同.
我在这做错了什么?我在上一个问题的答案中的实现是否正确?
我目前正在使用MVVM创建一个WPF应用程序.我在一个窗口(大约20个)中有大量文本框需要绑定到列表中的特定元素,需要一次填充所有文本框.通常我会将它们推入一个数组并以这种方式填充它们但是我不能在不破坏MVVM模型的情况下这样做.有没有一种快速有效的方法可以做到这一点,同时仍然坚持MVVM?
我正在尝试将所有数据从一个表复制到另一个表,因为第二个表的排序有点不同我正在使用以下SQL脚本来执行此操作:
USE LoanersTest
DROP TABLE LoanerItems1
CREATE TABLE LoanerItems1
(
LoanerKey INT NOT NULL UNIQUE
,BCPartNumber VARCHAR(255) NULL
,Manufacturer VARCHAR(255) NULL
,Model VARCHAR(255) NULL
,Modality INT NOT NULL UNIQUE
,Status INT NOT NULL UNIQUE
,Location INT NOT NULL UNIQUE
,ShelvingKey INT NOT NULL UNIQUE
,CalDate VARCHAR(255) NULL
,CalDue VARCHAR(255) NULL
,BCID VARCHAR(255) NULL
,SerialNumber VARCHAR(255) NULL
,AssetTag VARCHAR(255) NULL
,LoanTerm VARCHAR(255) NULL
,PartNumber VARCHAR(255) NULL
,Notes VARCHAR(255) NULL
,CriticalNotes VARCHAR(255) NULL
,ShippingNotes VARCHAR(255) NULL
,ReceivingNotes VARCHAR(255) NULL
,Description VARCHAR(255) NULL …Run Code Online (Sandbox Code Playgroud) 我目前正在尝试在Visual Studio中创建一个后期构建脚本来清理我构建版本的目录.批处理文件执行正常,所有预期的行为都发生,但在Visual Studio中,我收到一条消息说"Call post-build.bat" exited with code 1.
我的批处理脚本如下:
@echo off
GOTO :CleanFiles
:CleanFiles
set direct = %CD%
IF EXIST *.pdb (
DEL *.pdb
)
IF EXIST *.vshost.exe.config (
DEL *.vshost.exe.config
)
IF EXIST *.WPF4.xml (
DEL *.WPF4.xml
)
IF EXIST System.Windows.Interactivity.xml (
DEL System.Windows.Interactivity.xml
)
IF ERRORLEVEL 0 GOTO MakeDirectories
:MakeDirectories
IF EXIST %direct%lib (
rmdir /s %direct%lib
rmdir /s %direct%config
rmdir /s %direct%output
)
mkdir %direct%lib
mkdir %direct%config
mkdir %direct%output
IF ERRORLEVEL 0 GOTO MoveFiles
:MoveFiles
move …Run Code Online (Sandbox Code Playgroud) c# ×8
wpf ×5
dictionary ×3
mvvm ×2
mvvm-light ×2
.net ×1
.net-4.0 ×1
app-config ×1
batch-file ×1
epplus ×1
excel ×1
post-build ×1
serial-port ×1
sql ×1
sql-server ×1
xml ×1