我有以下地图用于转换SQL Server类型,SQLData类型和.NET类型:
/// <summary>
/// The map of types. THis maps all the corresponding types between sql server types, .net sql types, and .net types
/// </summary>
public static List<SqlTypeConversionHolder> TypeList = new List<SqlTypeConversionHolder>()
{
new SqlTypeConversionHolder("bigint", typeof(SqlInt64),typeof(Int64)),
new SqlTypeConversionHolder("binary", typeof(SqlBytes),typeof(Byte[])),
new SqlTypeConversionHolder("bit", typeof(SqlBoolean),typeof(Boolean)),
new SqlTypeConversionHolder("char", typeof(SqlChars),typeof(char)), //this one may need work
new SqlTypeConversionHolder("cursor", null,null),
new SqlTypeConversionHolder("date", typeof(SqlDateTime),typeof(DateTime)),
new SqlTypeConversionHolder("datetime", typeof(SqlDateTime),typeof(DateTime)),
new SqlTypeConversionHolder("datetime2", null,typeof(DateTime)),
new SqlTypeConversionHolder("DATETIMEOFFSET", null,typeof(DateTimeOffset)),
new SqlTypeConversionHolder("decimal", typeof(SqlDecimal),typeof(Decimal)),
new SqlTypeConversionHolder("float", typeof(SqlDouble),typeof(Double)),
//new SqlTypeConversionHolder("geography", typeof(SqlGeography),typeof(null));
//new SqlTypeConversionHolder("geometry", typeof(SqlGeometry),typeof(null));
//new …Run Code Online (Sandbox Code Playgroud) 我在输入字段中有几个TextBox,在我的视图中有一个"Save"按钮.其中两个TextBox是保存所必需的字段,我在xaml中设置了一个自定义ValidationRule,用于一些视觉反馈(红色边框和工具提示),如下所示:
<TextBox ToolTip="{Binding RelativeSource={x:Static RelativeSource.Self}, Path=(Validation.Errors)[0].ErrorContent}">
<TextBox.Text>
<Binding Path="ScriptFileMap" Mode="TwoWay" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<v:MinimumStringLengthRule MinimumLength="1" ErrorMessage="Map is required for saving." />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
"保存"按钮链接到一个调用SaveScript()函数的DelegateCommand.如果两个必填字段的属性为空,则该函数不允许用户保存:
public void SaveScript()
{
if (this.ScriptFileName.Length > 0 && this.ScriptFileMap.Length > 0)
{
// save function logic
}
}
Run Code Online (Sandbox Code Playgroud)
但是,该功能仍允许保存文件.仔细观察,我发现当ValidationRule失败时,这两个字段(ScriptFileName和ScriptFileMap)的值没有被更新,并且它超过了最后的已知值.
这是ValidationRule的预期行为还是我在某处丢失了某些东西或出现故障?如果是前者,有没有办法覆盖这种行为?如果空字符串永远不会传递给bound属性,我无法阻止ViewModel中的保存.
有没有办法将Visual Studio 2015诊断工具事件选项卡中显示的事件列表保存到文件?
在两天前推出的最新更新(26403.3)之后,我的VS 2017继续将我所有的等宽字体(文本编辑器,XAML设计器,所有文本工具Windows等)重置为Consolas 9.
我不断将其更改回我喜欢的字体和大小,并重新启动IDE以尝试保持更改,但无济于事,即使在IDE打开并运行时,它仍会重置为Consolas 9.直到最新更新才会发生这种情况.
有没有其他人经历过这个,这是一个错误,是否可能是由一些新的流氓扩展设置,任何想法如何防止它?
是的,我保存了所有设置,现在只需要重新导入设置,但是每天做这几次仍然很烦人......
我刚刚重新启动,现在我的文档选项卡已经消失,所有选项卡都在顶部......这个更新真的有问题......
我有一个像WPF UI的Outlook,左侧是导航,顶部是工具栏,底部是状态栏,全部都在DockPanel.
应用程序的"主要"区域DataGrid是LastChild,因此填充剩余空间,它目前看起来像这样:
<Grid DockPanel.Dock="Right">
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<views:View1 Grid.Column="0" Grid.Row="0"/>
<views:View2 Grid.Column="0" Grid.Row="0"/>
<views:View3 Grid.Column="0" Grid.Row="0"/>
<views:View4 Grid.Column="0" Grid.Row="0"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)
这些视图都是用户控件,它们具有自己的ViewModel,其Visibility属性绑定到ViewModel 中的属性,并由导航窗格选择控制.选择导航窗格项时,主ViewModel会向视图的ViewModel发送消息,并在收到消息后,视图的ViewModels会相应地设置其Visibility属性...
现在,这种方法很好但感觉不对,因为这些视图的所有ViewModel都是在app start上实例化的,而不是在选择相关的导航窗格时提出有关性能和内存使用情况的问题...
我的问题是,如果有在不诉诸PRISM/MEF或一些其它的插件选择了不同的导航窗格中载入每个视图和视图模型"按需",当相关的导航窗格中选择卸载这些意见和的ViewModels的一种方式架构...而且,更一般的是如何在主视图中构建具有多个视图/ ViewModel"嵌入"的应用程序?
今天我创建了一个应用程序,用户可以使用他/她选择的背景颜色和名称创建图像.但是现在我遇到了这个问题:当我尝试保存设置时(My.settings.bgcolor.save())它会保存颜色,但是我无法在WPF项目>>设置中看到它(它没有出现在那里,它没有出现在settings.setting中,但应用程序加载新内容).任何想法?
所要求的代码:
If (site.Text <> Nothing And num_tile.Text <> Nothing And cul <> Nothing) Then
My.Settings.shortcuts_bgcolor.Add(cul)
My.Settings.shortcuts_name.Add(num_tile.Text)
My.Settings.shortcuts_website.Add(site.Text)
Dim i As Integer = 0
For Each shc As String In My.Settings.shortcuts_name
MsgBox(My.Settings.shortcuts_name(i), MsgBoxStyle.Information)
i += 1
Next
Dim window As MainWindow = New MainWindow
window.IncarcaButoane()
Me.Close()
End If
End Sub
Private Sub Window_Closing(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles MyBase.Closing
My.Settings.Save()
End Sub
Private Sub Window_Closed(sender As System.Object, e As System.EventArgs) Handles MyBase.Closed
My.Settings.Save()
End Sub
Run Code Online (Sandbox Code Playgroud) 各位大家好,并提前感谢您的时间.
我正在使用WPF学习MVVM,用于我正在编写的小型Biz App.我已经阅读了很多关于MVVM模式的文章,并发现其中一个关键领域是尽可能地将ViewModel与View分离.
我想在我的应用程序中打开一个新窗口,但我不确定是应该使用ICommand从ViewModel打开它还是使用标准事件直接从视图打开它.我工作的人建议我应该使用命令,但后来我认为这意味着在我的ViewModel中引用了一个View,根据我的理解,这正是MVVM模式关注的避免.
我的理解是,如果一个窗口仅用于导航目的,打开新窗口的过程对模型没有影响,那么我应该使用标准事件将所有这些保留在视图上.
我知道在sw开发过程中,所有东西都"依赖",但我猜我的问题是有"正确"/标准的方法吗?
最好的问候,丹尼尔
我在这里检查了类似的问题,但答案与我的问题无关。
我是 C# 新手,我正在使用 Windows 窗体。
如屏幕截图所示,我有 form1、UserControl1 和 UserControl2。
Form1 有 2 个按钮(ShowUserControl1 和 ShowUserControl2)和 DataGridView。
UserControl1 有按钮“AddRow”和文本框。
UserControl2 什么都没有。
我单击“ShowUserControl2”按钮 ShowUserControl2 出现,然后我单击“ShowUserControl1”按钮 ShowUserControl1 出现,然后我在 UserControl1 的 texBox 中输入文本并单击“AddRow”,添加了一个新行,它工作正常。
现在的问题是:
当我单击“ShowUserControl1”然后单击“ShowUserControl2”然后再次单击“ShowUserControl1”并输入文本然后单击“AddRow”一次时,在DataGridView中一次添加了2行。单击“ShowUserControl1”3 次,然后单击“AddRow”一次,一次添加3 行,依此类推。
我认为 Form1 (HandleTheEvent) 中的偶数处理程序会被执行多次,因为我在 UserControl 之间切换时多次单击“ShowUserControl1”。如何防止偶数形式多次触发?请帮忙。谢谢
表格1:
public partial class Form1 : Form
{
UserControl1 UC1 = new UserControl1();
UserControl2 UC2 = new UserControl2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
//add user controls when form loads
Controls.Add(UC1);
Controls.Add(UC2);
}
private …Run Code Online (Sandbox Code Playgroud) 在WPF4释放的 Adam Nathan中说:
大多数WPF类派生自DispatcherObject,因此本质上是线程不安全的.
专业WPF编程声称相反:
DispatcherObject是框架层次结构中的最低级别类,并且因为几乎所有对象都从它继承,所以大多数对象本质上是线程安全的
DispatcherObject上的MSDN:
只有创建Dispatcher的线程才可以直接访问DispatcherObject.要从创建DispatcherObject的线程以外的线程访问DispatcherObject,请在与DispatcherObject关联的Dispatcher上调用Invoke或BeginInvoke.
基于MSDN描述看起来像WPF4 Unleashed引用是一个错字或Nathan是错的,专业WPF编程作者是对的...
无论如何,继承自DispatcherObject的类本身就是线程安全的还是固有的线程不安全的?
编辑:
MSDN还声明:
需要强制执行线程安全的DispatcherObject子类可以通过对所有公共方法调用VerifyAccess来实现.这可以保证调用线程是创建DispatcherObject的线程.
这间接证实了WPF4 Unleashed声明毕竟是准确的......
假设我们有一个长字符串,我们希望将字符串分成64个字符长而不分割单个字:
We prefer questions that can be answered, not just discussed. If your question is about this website, ask it on meta instead.
Run Code Online (Sandbox Code Playgroud)
如果我们这样分裂:
string.SplitByLength(64).ToList();
Run Code Online (Sandbox Code Playgroud)
我们最终会得到两个字符串:
We prefer questions that can be answered, not just discussed. I
f your question is about this website, ask it on meta instead.
Run Code Online (Sandbox Code Playgroud)
分割此字符串的最优雅方式是什么,以便第一个字符串在If字符串开头之前结束If?
换句话说,如何将长字符串拆分成等于或短于所需长度的字符串列表,同时不拆分任何单个字,而是拆分字之间最后可能的空白空间?