小编Dan*_*iel的帖子

在代码中设置WPF标签的Style属性?

在App.xaml中,我有以下代码:

<Application.Resources>
    <Style x:Key="LabelTemplate" TargetType="{x:Type Label}">
        <Setter Property="Height" Value="53" />
        <Setter Property="Width" Value="130" />
        <Setter Property="HorizontalAlignment" Value="Left" />
        <Setter Property="Margin" Value="99,71,0,0" />
        <Setter Property="VerticalAlignment" Value= "Top" />
        <Setter Property="Foreground" Value="#FFE75959" />
        <Setter Property="FontFamily" Value="Calibri" />
        <Setter Property="FontSize" Value="40" />
    </Style>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

这是为了为我的标签提供通用模板.

在主要的XAML代码中,我有以下代码行:

<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" />
Run Code Online (Sandbox Code Playgroud)

但是,我想通过代码初始化Style属性.我试过了:

label1.Style = new Style("{StaticResource LabelTemplate}");
Run Code Online (Sandbox Code Playgroud)

label1.Style = "{StaticResource LabelTemplate}";
Run Code Online (Sandbox Code Playgroud)

两种解决方案都无效.

任何帮助,将不胜感激 :).

c# wpf user-interface label

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

如何实现无限集类?

我正在为离散数学设计一个类库,我想不出一种实现无限集的方法.

到目前为止我所拥有的是:我有一个抽象基类Set,它实现了接口ISet.对于有限集,我派生出一个有限集类,它实现了每个集合方法.我可以这样使用它:

FiniteSet<int> set1 = new FiniteSet<int>(1, 2, 3);
FiniteSet<int> set2 = new FiniteSet<int>(3, 4, 5);
Console.WriteLine(set1); //{1, 2, 3}
Console.WriteLine(set2); //{3, 4, 5}

set1.UnionWith(set2);
Console.WriteLine(set1); //{1, 2, 3, 4, 5}
Run Code Online (Sandbox Code Playgroud)

现在我想代表一个无限集.我有从set,InfiniteSet派生另一个抽象类的想法,然后使用该库的开发人员必须从InfiniteSet派生来实现他们自己的类.我会提供常用的集合,例如N,Z,Q和R.

但我不知道我如何实现像Subset和GetEnumerator这样的方法 - 我甚至开始认为这是不可能的.如何以实际方式枚举无限集,以便可以将它与另一个无限集相交/联合?如何在代码中检查N是R的子集?至于基数问题..嗯,这可能是一个单独的问题.

所有这些使我得出结论,我实现无限集的想法可能是错误的方法.我非常感谢你的意见:).

编辑:为了清楚起见,我也想代表无数的无限集.

Edit2:我认为重要的是要记住最终目标是实现ISet,这意味着任何解决方案都必须提供(应该)实现所有ISet方法的方法,其中最有问题的是枚举方法和IsSubsetOf方法.

c# set-theory set

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

多态性:从基类中的受保护成员派生?

我正在编写一个基本的媒体播放器,我在编写多态代码时遇到了一些麻烦,这是我研究过的,但之前从未真正实现过.

有四个相关的类:MediaInfo,MovieInfo,Media和Movie.

MediaInfo是一个抽象基类,用于保存与所有媒体文件相关的信息.MovieInfo继承自MediaInfo并添加一些特定于视频文件的信息.

Media是一个抽象基类,表示所有媒体文件.电影继承自媒体.

现在,Media包含以下代码行:

protected MediaInfo info;
Run Code Online (Sandbox Code Playgroud)

在Media Media中,我有Accessors从MediaInfo中提取信息.但是,在Movie中,我想让Accessor也从MovieInfo中提取信息.

所以我在Movie中做的是:

protected MovieInfo info;
Run Code Online (Sandbox Code Playgroud)

并在构造函数内:

this.info = new MovieInfo(path);
Run Code Online (Sandbox Code Playgroud)

但是,现在我有了一个Accessor:

/// <summary>
/// Gets the frame height of the movie file.
/// </summary>
public string FrameHeight
{
    get
    {
        return this.info.FrameHeight;
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是,FrameHeight是一个仅在MovieInfo中可用的访问器.this.info被视为MediaInfo,尽管我将其声明为MovieInfo,因此代码会生成错误.

因此,将我的问题总结为一个更通用的问题:在派生类中,如何从基类中的受保护基础变量派生?

对不起,如果这有点令人困惑,我很乐意澄清任何不清楚的细节.

c# polymorphism

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

如何防止CSS伪元素在动画过程中消失?

这是我的(简化)情况:

http://jsfiddle.net/qFhaq/

单击该按钮可启动一个动画,可扩展div的高度.当div正在扩展时,:after伪元素(包含文本"look")消失,然后在动画结束时重新出现.

有没有办法防止伪元素消失,以便它在整个动画中可见?

html javascript css jquery

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

如何将 XDocument 的 XML 内容保存为 .xml 文件?

我有一个 XDocument 类,其中包含已经制作的 XML 内容。我基本上想打开一个 SaveFileDialog,让用户选择一个文件夹(而不是文件)将内容保存为 .xml 文件。

我在这样做时遇到了一些困难:

a) 如何使用 SaveFileDialog 提示用户选择文件夹?我只能用它来让用户选择一个文件。

b) 如何从 SaveFileDialog 中提取所选路径?

c) 获得路径后,如何保存 XDocument 的内容?有一个叫做 Save 的方法需要一个 Stream - 如何使用路径构建流?(这可能是一个基本问题,我几乎没有IO经验)

c# xml io linq-to-xml

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

是否可以实现具有O(1)空间复杂度的快速排序?

根据我在维基百科对quicksort空间复杂性的解释中的理解,quicksort的空间复杂性来自其递归性质.我很好奇是否可以非递归地实现快速排序,并且在这样做时,以恒定的空间复杂度实现它.

sorting algorithm complexity-theory quicksort space-complexity

4
推荐指数
2
解决办法
3775
查看次数

lb 指令究竟是做什么的?

我要考试了,其中一个练习题是:

假设$t0包含 value0x12121212$t1address 0x1000000

假设从地址开始的内存数据0x1000000是: 88 77 66 55

$t0执行以下代码后的值是什么:

lb $t0, 0($t1)
Run Code Online (Sandbox Code Playgroud)

a) 0x00000088b) 0x88121212c) 0xffffff88d)0x12121288

我给出的答案是a,因为lb指令将读取的字节(根据我对指令的理解)是 88。然后 88 将被存储在 中$t0,因此值将是0x00000088。但给出的答案是c。我觉得我对lb工作原理有一个根本的误解- 有人可以解释为什么答案c吗?

assembly mips

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

如何优化Shell32方法调用?

我正在设计一个媒体播放器,我设计了一个电影课.Movie类有一个MovieInfo成员,它继承自MediaInfo.MediaInfo有几个属性表示Movie文件的元数据(就是你所谓的那个?),例如文件长度,文件大小,文件路径等.为了提取这些信息,我使用了Shell32.

问题是Shell32中提供的方法非常非常慢.在我的数据库中有1部电影,这不是问题,但有10部电影,它开始变得明显,有100部电影,程序加载大约需要5分钟,而且有一些情况我必须重新初始化运行期间的电影,它再次停止程序的流程.

MediaInfo构造函数调用Initialize方法:

    /// <summary>
    /// Initializes all the information variables of the class.
    /// </summary>
    private void Initialize()
    {
        Folder mediaFolder = Shell32Processing.GetShellFolder(this.path);

        FolderItem media = Shell32Processing.GetShellFolderItem(this.path);

        //initialize bit rate value
        this.bitrate = mediaFolder.GetDetailsOf(media, 28);

        //initialize date accessed value
        this.dateAccessed = mediaFolder.GetDetailsOf(media, 5);

        //initialize date created value
        this.dateCreated = mediaFolder.GetDetailsOf(media, 4);

        //initialize date modified value
        this.dateModified = mediaFolder.GetDetailsOf(media, 3);

        //initialize data rate value
        this.dataRate = mediaFolder.GetDetailsOf(media, 279);

        //initialize file name value
        this.fileName = mediaFolder.GetDetailsOf(media, 155);

        //initialize file type value …
Run Code Online (Sandbox Code Playgroud)

c# optimization metadata shell32

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

为什么从我的逐字字符串中删除换行只返回最后一行?

我有以下代码:

string test = @"1
2
3";
Run Code Online (Sandbox Code Playgroud)

这一行:

Console.WriteLine(test.Replace("\n", "")); //3
Run Code Online (Sandbox Code Playgroud)

打印"3",而不是"123",这是我的预期.为什么这个方法只返回我的字符串的最后一行,我怎么能删除所有新行呢?

c# string verbatim-string

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

如何在程序中使用非常大的字符串(5亿个字符)?

我有一个.txt文件,其中包含Pi的5亿位二进制表示.

我需要在我的程序中使用它的字符串表示.我还需要能够搜索子串等等 - 换句话说,我需要能够像正常大小的字符串一样对待它.我会试着找到很多子串,所以速度是必要的.

我最初的逻辑是简单地将字符串直接复制并粘贴到程序中并将其用作静态变量..但我无法实际打开.txt文件,因此无法复制和粘贴.我的下一次尝试是从文件中读取整个字符串,但我不能在静态方法中执行此操作,并且WAAAY需要太长时间(实际上我不确切知道需要多长时间,我最终关闭了程序).

是否有可能做到这一点?任何帮助,将不胜感激.

编辑:潜在的相关信息:

使用此代码:

/// <summary>
    /// Gets a 500 million binary digit representation of Pi.
    /// </summary>
    public static string GetPi()
    {
        //as per http://msdn.microsoft.com/en-us/library/db5x7c0d.aspx
        StreamReader piStream = new StreamReader(@"C:\binaryPi.txt");
        string pi = "";
        string line;

        while ((line = piStream.ReadLine()) != null)
        {
            pi += line;
        }

        return pi;
    }
Run Code Online (Sandbox Code Playgroud)

我得到一个OutOfMemoryException ..所以扫描文件实际上似乎不可能,除非我遗漏了什么..

c# string

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