我很难将简单的静态字符串属性绑定到文本框.
这是具有静态属性的类:
public class VersionManager
{
private static string filterString;
public static string FilterString
{
get { return filterString; }
set { filterString = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
在我的xaml中,我只想将此静态属性绑定到文本框:
<TextBox>
<TextBox.Text>
<Binding Source="{x:Static local:VersionManager.FilterString}"/>
</TextBox.Text>
</TextBox>
Run Code Online (Sandbox Code Playgroud)
所有内容都编译,但在运行时,我得到以下异常:
无法将属性"Source"中的值转换为"System.Windows.Markup.StaticExtension"类型的对象.标记文件'BurnDisk中的对象'System.Windows.Data.Binding'出错;组件/ selectversionpagefunction.xaml'第57行位置29.
知道我做错了什么吗?
使用C#在FTP服务器上创建目录的简单方法是什么?
我想出了如何将文件上传到现有的文件夹,如下所示:
using (WebClient webClient = new WebClient())
{
string filePath = "d:/users/abrien/file.txt";
webClient.UploadFile("ftp://10.128.101.78/users/file.txt", filePath);
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我想上传到users/abrien,我会WebException说文件不可用.我认为这是因为我需要在上传文件之前创建新文件夹,但WebClient似乎没有任何方法可以实现.
我有一个浮点值设置为NaN(在监视窗口中看到),但我无法弄清楚如何在代码中检测到:
if (fValue == float.NaN) // returns false even though fValue is NaN
{
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Blend 3.0来编辑包含一些WPF控件的项目.该项目已经从Visual Studio 2008编译并运行良好.
然而,在Blend中,我遇到了一些毫无意义的神秘错误:
例如,我有一个派生自Control的类:
namespace Company.WPFControls.SearchTextBox
{
public class SearchTextBox : Control
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试在同一个程序集中的资源中使用它来分配样式:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Company.WPFControls.SearchTextBox"
<Style TargetType="{x:Type local:SearchTextBox}">
...
</Style>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)
我在Blend中收到以下错误:
名称"SearchTextBox"在命名空间"clr-namespace:Company.WPFControls.SearchTextBox"中不存在.
我已经尝试通过添加指定程序集名称,;assembly=Company.WPFControls但它不会删除错误.
有没有办法解决这个问题,或者至少找出问题的来源?
我正在通过VSPackage为Visual Studio开发语言服务.每当从解决方案的项目中添加/删除文件时,我都需要更新我的解析数据.
我想订阅解决方案和项目活动.
我尝试如下,但是当我向解决方案添加/删除项目或向项目添加/删除项目时,这些事件都不会被触发.
DTE dte = (DTE)languageService.GetService(typeof(DTE));
if (dte == null)
return;
((Events2)dte.Events).SolutionEvents.ProjectAdded += SolutionEvents_ProjectAdded;
((Events2)dte.Events).SolutionEvents.ProjectRemoved += SolutionEvents_ProjectRemoved;
((Events2)dte.Events).ProjectItemsEvents.ItemAdded += ProjectItemsEvents_ItemAdded;
((Events2)dte.Events).ProjectItemsEvents.ItemRemoved += ProjectItemsEvents_ItemRemoved;
Run Code Online (Sandbox Code Playgroud)
从VSPackage订阅这些事件的最佳方法是什么?任何帮助赞赏!
在我的应用程序中,我想让用户自定义键盘快捷键,就像在Visual Studio的键盘选项中一样.用户可以聚焦空白文本框,然后键入他想要分配给命令的任何快捷方式.
我最接近它的工作是订阅TextBox.PreviewKeyDown事件,将其设置为处理以防止在文本框中输入实际文本.然后我忽略与修饰键相关联的KeyDown事件(是否有更简洁的方法来确定Key是否是修饰键?).
// Code-behind
private void ShortcutTextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
// The text box grabs all input
e.Handled = true;
if (e.Key == Key.LeftCtrl ||
e.Key == Key.RightCtrl ||
e.Key == Key.LeftAlt ||
e.Key == Key.RightAlt ||
e.Key == Key.LeftShift ||
e.Key == Key.RightShift)
return;
string shortcutText = "";
if ((Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
shortcutText += "Ctrl+";
if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift)
shortcutText += "Shift+";
if ((Keyboard.Modifiers & ModifierKeys.Alt) == ModifierKeys.Alt)
shortcutText += "Alt+";
_ShortcutTextBox.Text = …Run Code Online (Sandbox Code Playgroud) 我有一个列表AvailableItems,我想显示为一个复选框列表,以便用户可以选择要生成的项目,然后存储在另一个名为的ItemsToGenerate列表中(我的列表实际上只是字符串列表).
显示包含相应复选框的所有可用项目很简单:
<ItemsControl ItemsSource="{Binding Path=AvailableItems}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Content="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Run Code Online (Sandbox Code Playgroud)
但是现在我需要将每个Checkbox.IsChecked属性绑定到项目在ItemsToGenerate列表中的事实.我想到ListContainmentToBoolConverter这样做:
IsChecked="{Binding Path=ItemsToGenerate,
Converter={StaticResource ListContainmentToBoolConverter}}"
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我错过了ConverterParameter传递每个项目的值,但我不能这样做,因为ConverterParameter不支持绑定.
有任何想法吗?
在我的文档网页中,我经常需要提供存储在Intranet上的位置,文件和应用程序(.xbap)的链接.
在IE中,这适用于格式如下的URL:
<a href="file://///company.org/ProjectA/StatsReport">Go to folder</a>
<a href="file://///company.org/ProjectA/Readme.txt">Download file</a>
<a href="file://///company.org/ProjectA/Dashboard.xbap">Run xbap</a>
Run Code Online (Sandbox Code Playgroud)
这些链接在IE下都可以正常工作,但在Firefox中它们没有.
有谁知道如何格式化上述链接在IE和Firefox中工作?
编辑 如果我将它们放在本地文件中,上面的链接实际上是有效的.当它们是网络上的html文件(不在我的机器上)的一部分时,它们仅停止在Firefox中工作.Firefox中必须有某种安全设置,以防止文件:///链接来自外部内容吗?
我正在用C#写一个麻将游戏(中国传统游戏,不是纸牌游戏).在为机器人播放器的AI编写代码时,我想知道像F#这样的函数式语言是否比我目前使用的语言更合适,而C#中有很多Linq.我不太了解F#,这就是我在这里问的原因.
为了说明我试图解决的问题,这里是麻将的简要总结:
麻将有点像Gin Rummy.你手上有13块瓷砖,每转一圈,你画一块瓷砖并丢弃另一块瓷砖,试图改善你的手牌,以获得麻将牌,包括4套和一对.集合可以是3种(pungs),4种(kongs)或3种连续瓦片(chows)的序列.你也可以偷走另一个玩家的丢弃,如果它可以完成你的一套.
我必须写的代码来检测机器人是否可以声明3个连续的瓷砖集(chow)是相当繁琐的.我必须找到手中所有独特的瓷砖,然后开始检查手中是否有一个包含3个瓷砖的序列.检测机器人是否可以去麻将更加复杂,因为它是检测他手中是否有4组和一对的组合.而这只是一个标准的麻将牌.还有许多"特殊"牌可以打破这些规则,但仍然是麻将牌.例如,"13个独特的奇迹"由13个特定的瓷砖组成,"玉帝国"仅由绿色瓷砖等组成.
在一个完美的世界里,我希望能够简单地陈述麻将的"规则",并且让语言能够将一组13个区块与这些规则相匹配,以检索它实现的规则,例如,检查是否它是一个麻将手或者它包括4种类型.这是F#的模式匹配功能可以帮助解决的吗?
有没有办法在使用时强制+在正数字前显示标志StringFormat?
例如:
<TextBlock Text="{Binding Path=PercentAgainstBudget,
StringFormat={}{0:0.00}%}" />
Run Code Online (Sandbox Code Playgroud)
如果PercentAgainstBudget是否定的,我会看到-标志.但如果它是积极的,它不会.由于这个数字是一个偏移量,我想强制显示+/-.我可以做一个,ValueConverter但我想知道是否有办法通过StringFormat财产.