小编00j*_*0jt的帖子

来自相对资源的ImageSource

我正在尝试使用本地资源在Button中放置一个图标.(C#Visual Studio 2012)

直接在我的项目中,我有一个名为"Resources"的文件夹,其中包含"Icons/MyIcon.png"

以下代码有效(但不使用相对路径)

<Button Width="20" Height="20">
  <Button.Background>
        <ImageBrush ImageSource="C:\Documents\MyProject\Resources\Icons\MyIcon.png">
          </ImageBrush>
      </Button.Background>
Run Code Online (Sandbox Code Playgroud)

但是,我希望它使用相对路径...所以我尝试了以下

  <ImageBrush ImageSource="..\MyProject\Resources\Icons\MyIcon.png">
Run Code Online (Sandbox Code Playgroud)

它编译,但然后给我错误:

{"Cannot locate resource 'myproject/resources/icons/myicon.png'."}
Run Code Online (Sandbox Code Playgroud)

然后我发现了一篇文章,谈到引用该项目,并说:

"/[ assembly name ];component[ path within the project ]"
Run Code Online (Sandbox Code Playgroud)

所以我试过了:

<ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon.png">
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

它会出现在GUI-Builder中...但是当我真正尝试"调试"代码时......它无法运行.

如果我通过添加'123'来改变路径,例如:

 <ImageBrush ImageSource="/MyProject;component\Resources\Icons\MyIcon123.png">
Run Code Online (Sandbox Code Playgroud)

我得到一个预编译错误:"找不到指定的文件".一旦我删除'123',错误就会消失.并再次在图表中显示图标.但当我跑...我仍然得到:

{"Cannot locate resource 'resources/icons/myicon.png'."}
Run Code Online (Sandbox Code Playgroud)

到底是怎么回事?为什么它只能在运行之前找到资源?而不是当我真正开始?

c# wpf xaml imagesource visual-studio-2012

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

C#中的FileStream和FileSystemWatcher,奇怪的问题"进程无法访问文件"

我有这个复杂的代码库,它正在侦听某个文件夹上的FileCreated事件.当文件被创建(其中还包括将文件移动到该文件夹​​)时,我想读取该文件并对其执行某些操作.它适用于第一个文件,但在所有其他尝试之后抛出异常.在调试模式下(使用VisualStudio),将抛出错误,但如果我只是单击"继续"..它将工作(没有错误).

我发布了简化代码,它证明了这个问题.

例如,启动应用程序,单击"开始"按钮,然后"创建新的文本文件"

输出是:

Working
Run Code Online (Sandbox Code Playgroud)

如果您以完全相同的方式创建2ed文件,则输出为:

Broken: The process cannot access the file 'C:\TestFolder\New Text Document (2).txt' because it is being used by another process.
Working, after breaking
Run Code Online (Sandbox Code Playgroud)

在查看我的代码之后,您将看到上面的打印输出意味着首先抛出了"无法访问文件"异常,但是在catch语句中执行相同的调用突然起作用.

这是没有意义的我,因为文件显然没有使用别的(我只是创造了它)..和它的作品一秒钟后,无论如何....

以下是我的代码

XAML:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" >
    <StackPanel>
        <Button Click="Button_Click"  Content="Start"/>
    </StackPanel>
</Window>
Run Code Online (Sandbox Code Playgroud)

代码背后:

using System;
using System.Diagnostics;
using System.IO;
using System.Threading;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;


namespace WpfApplication1
{ 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Button_Click(object sender, RoutedEventArgs e) …
Run Code Online (Sandbox Code Playgroud)

c# filesystemwatcher filestream

2
推荐指数
1
解决办法
7092
查看次数

C#P\Invoke DLL没有进入C++的入口点?

我有一个C++ Dll"TheFoo.dll",方法是"Foo()"

我可以通过简单地调用以下方法访问使用此方法的其他C++代码:

Foo();
Run Code Online (Sandbox Code Playgroud)

我相信该方法确实具有:

 __declspec( dllexport )
Run Code Online (Sandbox Code Playgroud)

所以,随着我对P/Invoke的阅读,我想我应该能够简单地从我的C#代码中调用相同的方法:

namespace PInvokeExample1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

        }


        [DllImport(@"C:\MyFolder\TheFoo.dll")]
        public static extern
            void Foo();

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Foo();

        }



    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行它时,我收到一个错误:

Unable to find an entry point named 'Foo' in DLL 'C:\MyFolder\TheFoo.dll'.
Run Code Online (Sandbox Code Playgroud)

任何想法为什么没有找到?

c# pinvoke dllimport

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

如何将WPF RibbonWindow的标题居中?

我想将RibbonWindow的标题居中,而不是让它在侧面对齐.

这个帖子说它有一个答案: 通过XAML Code中心WPF RibbonWindow标题

但它不起作用.

贝娄是一个图像和相应的代码.

标题不集中

    <RibbonWindow x:Class="Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
    <Grid>
        <Ribbon>
            <Ribbon.TitleTemplate>
            <DataTemplate>
                <TextBlock TextAlignment="Center" HorizontalAlignment="Stretch" Width="{Binding ElementName=Window, Path=ActualWidth}">ApplicationTitle
                    <TextBlock.Effect>
                        <DropShadowEffect ShadowDepth="0" Color="MintCream " BlurRadius="10"   />
                    </TextBlock.Effect>
                </TextBlock>
            </DataTemplate>
            </Ribbon.TitleTemplate>
        </Ribbon>
    </Grid>
    </RibbonWindow>
Run Code Online (Sandbox Code Playgroud)

我正在使用VS 2012,.NET 4.5和附带的System.Windows.Controls.Ribbon程序集.

wpf ribbon

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