小编Ant*_*ien的帖子

绑定到静态属性

我很难将简单的静态字符串属性绑定到文本框.

这是具有静态属性的类:

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.

知道我做错了什么吗?

data-binding wpf xaml

163
推荐指数
9
解决办法
16万
查看次数

如何使用C#在ftp服务器上创建目录?

使用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似乎没有任何方法可以实现.

.net c# ftp webclient

61
推荐指数
3
解决办法
9万
查看次数

如果与NaN的比较总是返回false,我如何比较浮点数到NaN?

我有一个浮点值设置为NaN(在监视窗口中看到),但我无法弄清楚如何在代码中检测到:

if (fValue == float.NaN) // returns false even though fValue is NaN
{
}
Run Code Online (Sandbox Code Playgroud)

c#

39
推荐指数
4
解决办法
3万
查看次数

Expression Blend:获取错误"XXX"在名称空间"XXX"中不存在,但在VS2008中不存在

我正在尝试使用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但它不会删除错误.

有没有办法解决这个问题,或者至少找出问题的来源?

expression-blend expression-blend-3 expression-blend-4

29
推荐指数
3
解决办法
7816
查看次数

如何从VSPackage订阅解决方案和项目事件

我正在通过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订阅这些事件的最佳方法是什么?任何帮助赞赏!

mpf vspackage visual-studio-extensions

16
推荐指数
3
解决办法
4980
查看次数

如何在WPF中从用户读取自定义键盘快捷键?

在我的应用程序中,我想让用户自定义键盘快捷键,就像在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)

wpf user-input keyboard-shortcuts

12
推荐指数
1
解决办法
4374
查看次数

将复选框列表绑定到已检查值列表的最简单方法是什么

我有一个列表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不支持绑定.

有任何想法吗?

wpf binding

11
推荐指数
2
解决办法
2万
查看次数

如何创建一个在IE和Firefox中都有效的file://超链接?

在我的文档网页中,我经常需要提供存储在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中必须有某种安全设置,以防止文件:///链接来自外部内容吗?

firefox internet-explorer hyperlink

10
推荐指数
2
解决办法
11万
查看次数

F#是纸牌游戏AI的好语言吗?

我正在用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#的模式匹配功能可以帮助解决的吗?

f# artificial-intelligence

10
推荐指数
1
解决办法
2358
查看次数

如何使用StringFormat强制显示"+"符号

有没有办法在使用时强制+在正数字前显示标志StringFormat

例如:

<TextBlock Text="{Binding Path=PercentAgainstBudget, 
                          StringFormat={}{0:0.00}%}" />
Run Code Online (Sandbox Code Playgroud)

如果PercentAgainstBudget是否定的,我会看到-标志.但如果它是积极的,它不会.由于这个数字是一个偏移量,我想强制显示+/-.我可以做一个,ValueConverter但我想知道是否有办法通过StringFormat财产.

c# string wpf

9
推荐指数
1
解决办法
3908
查看次数