小编ale*_*2k8的帖子

寻找DependencyProperty.Register快捷方式

定义WPF属性太长:

public static readonly DependencyProperty FooProperty = 
  DependencyProperty.Register("Foo", typeof(string), typeof(FooClass), new PropertyMetadata("Foooooo"));
Run Code Online (Sandbox Code Playgroud)

我有一个辅助方法,使它更短一些:

public static readonly DependencyProperty FooProperty =
  WpfUtils.Property<string, FooControl>("Foo", "Foooooo");
Run Code Online (Sandbox Code Playgroud)

码:

public partial class WpfUtils 
{
    public static DependencyProperty Property<T, TClass>(string name) 
    {
        return Property<T, TClass>(name, default(T));
    }

    public static DependencyProperty Property<T, TClass>(string name, T defaultValue) 
    {
        return DependencyProperty.Register(name, typeof(T), typeof(TClass), new PropertyMetadata(defaultValue));
    }
}
Run Code Online (Sandbox Code Playgroud)

周围有更好的帮手吗?

wpf properties helper

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

MarkupExtension作为Template中的计算属性

有这样的MarkupExtension

public class Extension1 : MarkupExtension
{
    private static int _counter = 0;

    public override object ProvideValue(IServiceProvider serviceProvider)
    {
        return string.Format("Item {0}", _counter++);
    }
}
Run Code Online (Sandbox Code Playgroud)

和这个XAML

<ListBox>
  <ListBoxItem Content="{my:Extension1}"></ListBoxItem>
  <ListBoxItem Content="{my:Extension1}"></ListBoxItem>
  <ListBoxItem Content="{my:Extension1}"></ListBoxItem>
</ListBox>
Run Code Online (Sandbox Code Playgroud)

我得到这样的清单:

Item 1
Item 2
Item 3
Run Code Online (Sandbox Code Playgroud)

现在我尝试使用此Style生成相同的列表

<Style TargetType="ListBoxItem">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ListBoxItem">
                <TextBox Text="{my:Extension1}"></TextBox>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>
Run Code Online (Sandbox Code Playgroud)

并有这样的XAML

<ListBox ItemsSource="{StaticResource data}"></ListBox>
Run Code Online (Sandbox Code Playgroud)

我明白了

Item 0
Item 0
Item 0
Run Code Online (Sandbox Code Playgroud)

所以{my:Extension1}仅评估一次.我可以创建一个将为每个项目评估的计算属性吗?

wpf templates markup-extensions

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

REXML保留属性顺序

我尝试使用REXML生成这样的XML

<root>
  <add key='foo' value='bar'/>
</root>
Run Code Online (Sandbox Code Playgroud)

但我得到的是(注意键/值顺序)

<root>
  <add value='bar' key='foo'/>
</root>
Run Code Online (Sandbox Code Playgroud)

码:

require 'rexml/document'
include REXML

doc = Document.new
doc.add_element('root')
el = doc.root.add_element('add')
el.add_attribute('key', 'foo')
el.add_attribute('value', 'bar')
puts doc
Run Code Online (Sandbox Code Playgroud)

如果我写的话没关系:

el.add_attribute('key', 'foo')
el.add_attribute('value', 'bar')
Run Code Online (Sandbox Code Playgroud)

要么

el.add_attribute('value', 'bar')
el.add_attribute('key', 'foo')
Run Code Online (Sandbox Code Playgroud)

结果是一样的.看起来REXML使用一些字典来保存属性......

我可以强制执行所需的订单:键/值吗?

ruby xml

3
推荐指数
2
解决办法
1750
查看次数

为什么e.Source依赖于TreeView填充方法?

我有两棵树:

  1. fooTree - 由元素组成,
  2. barTree - 由

两个树都有MouseRightButtonDown事件,但e.Source类型不同:

  1. fooTree - System.Windows.Controls.TreeViewItem
  2. barTree - System.Windows.Controls.TreeView

为什么e.Source有所不同?另外,我如何获得barTree的点击项目?

标记:

    <TreeView Name="fooTree" MouseRightButtonDown="fooTree_MouseDown">
        <TreeViewItem Header="foo"></TreeViewItem>
        <TreeViewItem Header="foo"></TreeViewItem>
    </TreeView>

    <TreeView Name="barTree" MouseRightButtonDown="barTree_MouseDown" ItemsSource="{Binding BarItems}">
        <TreeView.ItemTemplate>
            <HierarchicalDataTemplate>
                <TextBlock Text="{Binding}" />
            </HierarchicalDataTemplate>
        </TreeView.ItemTemplate>
    </TreeView>
Run Code Online (Sandbox Code Playgroud)

码:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        this.DataContext = this;
    }

    public string[] BarItems
    {
        get { return new string[] { "bar", "bar" }; }
    }

    private void barTree_MouseDown(object sender, MouseButtonEventArgs e) 
    {
    }

    private void fooTree_MouseDown(object sender, …
Run Code Online (Sandbox Code Playgroud)

wpf treeview event-handling

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

在MyUserControl.xaml中声明性地设置MyUserControl的属性

假设我们有这样的控制:

public partial class MyUserControl : UserControl
{
    public MyUserControl() {
        InitializeComponent();
    }

    public string Foo { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如何在MyUserControl.xaml中以声明方式设置"Foo"属性值?

<UserControl x:Class="Test.MyUserControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <!-- Looking for some thing like this -->
    <Foo>Hola</Foo>

</UserControl>
Run Code Online (Sandbox Code Playgroud)

更清楚:如何在XAML中为代码隐藏中定义的属性设置值.

wpf xaml user-controls

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

为什么@($ null)是$ false,但@($ null,$ null)是$ true?

好奇,这背后的想法是什么:

@() -as [bool]
# False

@($null) -as [bool] 
# False

@($null, $null) -as [bool]
# True
Run Code Online (Sandbox Code Playgroud)

我希望False/True/True或False/False/False,但不是False/False/True.

arrays powershell

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

Java日志记录级别混乱

我将日志记录级别设置为CONFIG,但是看不到在CONFIG级别写入的消息.我错过了什么?

组态:

Logger logger = java.util.logging.Logger.getLogger("xxx");
logger.setLevel(java.util.logging.Level.CONFIG);
Run Code Online (Sandbox Code Playgroud)

测试:

logger.log(java.util.logging.Level.SEVERE, "severe");
logger.log(java.util.logging.Level.WARNING, "warning");
logger.log(java.util.logging.Level.INFO, "info");
logger.log(java.util.logging.Level.CONFIG, "config");
logger.log(java.util.logging.Level.FINE, "fine");
logger.log(java.util.logging.Level.FINER, "finer");
logger.log(java.util.logging.Level.FINEST, "finest");
Run Code Online (Sandbox Code Playgroud)

输出:

SEVERE: severe
WARNING: warning
INFO: info
Run Code Online (Sandbox Code Playgroud)

java logging java.util.logging

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

EF.如何联合表,排序行和获取顶级实体?

我想从两个表中联合记录,对它们进行排序,并从结果集中读取TOP行.

T1
--------
Id, Timestamp, Text1

T2
--------
Id, Timestamp, Text2
Run Code Online (Sandbox Code Playgroud)

使用SQL可以这样做:

SELECT TOP 10 * FROM
(
    SELECT 
        [Timestamp], 
        [Text1] 

    FROM 
        T1

    UNION

    SELECT 
        [Timestamp], 
        [Text2]

    FROM 
        T2
) as x

ORDER BY [Timestamp]
Run Code Online (Sandbox Code Playgroud)

问:如何使用EF linq完成该任务?

entity-framework linq-to-sql

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

系统类加载器的资源查找算法

在Java 文档中,我看到了这样的陈述:

系统类加载器的资源查找算法用于查找资源.

但是我在哪里可以了解这种"查找算法"实际上是如何工作的,尤其是在Android环境中.

java android

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

如何最快速地编辑增量搜索突出显示的文本?

鉴于这样的文字

你好,世界

我对“世界”进行增量搜索

宇宙世界

文字被高亮显示

你好,世界

现在我想输入新文本“全部”而不是突出显示并得到:

大家好

我怎样才能做到这一点?(请注意,我不是在寻找“查询替换”或类似内容)。理想情况下,它必须是这样的:

Cs World BS 全部

emacs

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