定义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)
周围有更好的帮手吗?
有这样的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}仅评估一次.我可以创建一个将为每个项目评估的计算属性吗?
我尝试使用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使用一些字典来保存属性......
我可以强制执行所需的订单:键/值吗?
我有两棵树:
两个树都有MouseRightButtonDown事件,但e.Source类型不同:
为什么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) 假设我们有这样的控制:
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中为代码隐藏中定义的属性设置值.
好奇,这背后的想法是什么:
@() -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.
我将日志记录级别设置为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) 我想从两个表中联合记录,对它们进行排序,并从结果集中读取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完成该任务?
鉴于这样的文字
你好,世界
我对“世界”进行增量搜索
宇宙世界
文字被高亮显示
你好,世界
现在我想输入新文本“全部”而不是突出显示并得到:
大家好
我怎样才能做到这一点?(请注意,我不是在寻找“查询替换”或类似内容)。理想情况下,它必须是这样的:
Cs World BS 全部
wpf ×4
java ×2
android ×1
arrays ×1
emacs ×1
helper ×1
linq-to-sql ×1
logging ×1
powershell ×1
properties ×1
ruby ×1
templates ×1
treeview ×1
xaml ×1
xml ×1