小编Cod*_*ked的帖子

WPF Popup UI显示黑色

我正在使用WPF Popup控件,它将背景显示为黑色.我把StackPanel放在它里面,背景="透明",但这没有帮助.

<Popup PlacementTarget="{Binding ElementName=parentStackPanel}" Placement="Center"
        IsOpen="False" Name="m_popWaitNotifier" PopupAnimation="None" 
        AllowsTransparency="False">
    <StackPanel Orientation="Vertical" Background="Transparent">
        <uc:CircularProgressBar x:Name="CB" StartupDelay="0"
                                            RotationsPerMinute="20"
                                            Height="25" Foreground="White"
                                            Margin="12"/>
    </StackPanel>
</Popup>
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我如何使Popup背景透明(或任何颜色)?

wpf user-interface popup

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

强类型动态Linq排序

我正在尝试构建一些代码来动态排序Linq IQueryable <>.

显而易见的方法是在这里,使用字符串字符串对列表进行排序
http://dvanderboom.wordpress.com/2008/12/19/dynamically-composing-linq-orderby-clauses/

但是,我想要一个更改 - 编译字段名称的时间检查,以及使用重构/查找所有引用来支持以后的维护的能力.这意味着我想将字段定义为f => f.Name,而不是字符串.

对于我的具体用途,我想封装一些代码,这些代码将决定应该根据用户输入使用命名的"OrderBy"表达式列表中的哪一个,而不必每次都编写不同的代码.

这是我写的内容的要点:

var list = from m Movies select m; // Get our list

var sorter = list.GetSorter(...); // Pass in some global user settings object

sorter.AddSort("NAME", m=>m.Name);
sorter.AddSort("YEAR", m=>m.Year).ThenBy(m=>m.Year);

list = sorter.GetSortedList();

...
public class Sorter<TSource>
...
public static Sorter<TSource> GetSorter(this IQueryable<TSource> source, ...)
Run Code Online (Sandbox Code Playgroud)

GetSortedList函数确定要使用哪个命名排序,这会产生List对象,其中每个FieldData包含在AddSort中传递的字段的MethodInfo和Type值:

public SorterItem<TSource> AddSort(Func<T, TKey> field)
{
   MethodInfo ... = field.Method;
   Type ... = TypeOf(TKey);
   // Create item, add item to diction, add fields to …
Run Code Online (Sandbox Code Playgroud)

.net c# linq

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

缓存typeof(MyControl)的返回值是否提供任何优化?

我看到类似于以下代码的一些原生WPF控件:

static MyControl {
    Type typeFromHandle = typeof(MyControl);

    // Which is used in various places
    SomeProperty.OverrideMetadata(typeFromHandle, ...);
    CommandManager.RegisterClassInputBinding(typeFromHandle, ...);
    EventManager.RegisterClassHandler(typeFromHandle, ...);
}
Run Code Online (Sandbox Code Playgroud)

似乎以下代码具有相同的性能:

static MyControl {
    SomeProperty.OverrideMetadata(typeof(MyControl), ...);
    CommandManager.RegisterClassInputBinding(typeof(MyControl), ...);
    EventManager.RegisterClassHandler(typeof(MyControl), ...);
}
Run Code Online (Sandbox Code Playgroud)

在JIT代码或运行时期间,这种方法是否提供了任何性能优势?

.net c# optimization

22
推荐指数
3
解决办法
2059
查看次数

如何使WPF样式可继承到派生类?

在我们的WPF应用程序中,我们拥有全球风格TargetType={x:Type ContextMenu}.我创建了一个派生自ContextMenu的MyContextMenu,但现在默认样式不适用.

如何告诉WPF我希望MyContextMenu从ContextMenu继承默认样式?希望我可以从我的控件本身(通过静态ctor元数据覆盖或其他什么?)中做到这一点,而不必在任何xaml中乱七八糟.

c# wpf xaml

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

为什么Visual Studio项目仅限于一种语言?

这个问题的灵感来自于这样一个问题:F#在哪些领域"使用时绝对没有意义"?

理论上,应该可以在单个项目中使用任何.NET支持的语言.因为每件事都应该编译成IL代码,然后链接到一个程序集中.

一些好处包括能够在一个类中使用F#,其中F#更适合实现它的功能,C#适用于另一个类.

是否有一些我忽视的技术限制阻止了这种设置?

c# f# visual-studio

12
推荐指数
4
解决办法
1747
查看次数

For循环和DateTime问题

我想利用forDateTime这样的:

for (DateTime d = _BookedCheckIn; d <= _BookedCheckOut; d.AddDays(1))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但问题是d不会增加.有谁知道问题是什么?

c# for-loop

12
推荐指数
2
解决办法
1371
查看次数

如何在Silverlight中按名称获取DependencyProperty?

情况:我有一个字符串,表示Silverlight中TextBox的DependencyProperty的名称.例如:"TextProperty".我需要获得TextBox的实际TextProperty的引用,它是DependencyProperty.

问题:如果我得到的只是属性的名称,我如何获得对DependencyProperty(在C#中)的引用?

诸如DependencyPropertyDescriptor之类的东西在Silverlight中不可用.我似乎不得不求助于反思来获得参考.有什么建议?

c# silverlight dependency-properties

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

使用XAML中的Generic IValueConverter

我有一个通用类实现IValueConverter.就像是:

class MyValueConverter<T> : IValueConverter
Run Code Online (Sandbox Code Playgroud)

使用XAML 2009,我可以像这样使用它:

<my:MyValueConverter x:TypeArguments='x:String'/>
Run Code Online (Sandbox Code Playgroud)

但显然不允许"编译"的XAML(我想我们必须等待.NET 5)

我目前的解决方法是为每种用法进行子类化:

class FooMyValueConverter : MyValueConverter<Foo>
Run Code Online (Sandbox Code Playgroud)

是否可以仅使用XAML 2006在标记中执行此操作?

c# wpf xaml

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

C#:无法撤消插入的文本

我使用KeyPress事件以编程方式在自定义RichTextBox中添加文本:

SelectedText = e.KeyChar.ToString(); 
Run Code Online (Sandbox Code Playgroud)

问题是以这种方式插入文本不会触发CanUndo标志.

因此,当我尝试撤消/重做文本时(通过调用文本框的Undo()和Redo()方法),没有任何反应.

我尝试以编程方式从TextChanged()事件中唤起KeyUp()事件,但仍未将CanUndo标记为true.

如何撤消插入的文本而不必为撤消和重做操作创建列表?

谢谢

c# undo redo winforms

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

无法在PowerShell中加载XAML

我有一个非常基本的PowerShell脚本,可以加载xaml布局.它抛出了这个错误:

用"1"参数调用"Load"的异常:
"无法创建
程序集'PresentationFramework,Version = 3.0.0.0,
Culture = neutral,PublicKeyToken = 31bf3856ad364e35'中定义的'Window'实例.
调用线程必须是STA,因为很多UI组件都需要这个."

我已经多次查看了脚本和xaml文件,但是我没有看到问题出在哪里,并且我无法完全理解我所获得的错误也无济于事.任何帮助将非常感激.谢谢.

Powershell脚本:

Add-Type -AssemblyName presentationframework
$xaml = [xml](Get-Content MainWindow.xaml)
$reader = New-Object System.Xml.XmlNodeReader $xaml
$form = [Windows.Markup.XamlReader]::Load($reader)
$button = $form.FindName('testButton')
$button.Add_Click({
    $s = $form.FindName('testBox').Text;
    $form.FindName('testLabel').Content = $s;
})
$form.ShowDialog()
Run Code Online (Sandbox Code Playgroud)

Xaml文件:

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Name="Window"
    Title="MainWindow"
    Width="640" Height="480">

    <Grid x:Name="LayoutRoot">
        <TextBox x:Name="testBox" HorizontalAlignment="Left"
                 Margin="26.782,48.626,0,0" TextWrapping="Wrap"
                 Text="New label text" VerticalAlignment="Top" Width="130.22"/>
        <Label x:Name="testLabel" Content="User Search" HorizontalAlignment="Left"
                 Margin="20.666,22.666,0,0" VerticalAlignment="Top"/>
        <Button x:Name="testButton" Content="Change It!" HorizontalAlignment="Left"
                 Margin="26.782,85,0,0" VerticalAlignment="Top" Width="75"/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

wpf powershell xaml

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