1
Q
选择WPF控件
A
回答
1
我对NLog并不熟悉,但我想如果您必须在少量的预先确定的选项之间进行选择,那么ComboBox
就是最好的UI元素。
你说你有12个日志级别,因此,在这种情况下,它使大多数使用一个ItemsControl
实际显示这些项目,而不是自己创建所有的UI元素的意义:
<Window x:Class="MiscSamples.LogLevelsSample"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="LogLevels" Height="300" Width="300">
<ItemsControl ItemsSource="{Binding LogRules}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Width="100" Margin="2" Text="{Binding Name}"/>
<ComboBox ItemsSource="{Binding DataContext.LogLevels, RelativeSource={RelativeSource AncestorType=Window}}"
SelectedItem="{Binding LogLevel}" Width="100" Margin="2"/>
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Window>
代码背后:
public partial class LogLevelsSample : Window
{
public LogLevelsSample()
{
InitializeComponent();
DataContext = new LogSettingsViewModel();
}
}
视图模型:
public class LogSettingsViewModel
{
public List<LogLevels> LogLevels { get; set; }
public List<LogRule> LogRules { get; set; }
public LogSettingsViewModel()
{
LogLevels = Enum.GetValues(typeof (LogLevels)).OfType<LogLevels>().ToList();
LogRules = Enumerable.Range(1, 12).Select(x => new LogRule()
{
Name = "Log Rule " + x.ToString(),
LogLevel = MiscSamples.LogLevels.Debug
}).ToList();
}
}
数据项:
public class LogRule
{
public string Name { get; set; }
public LogLevels LogLevel { get; set; }
}
public enum LogLevels
{
Trace,
Debug,
Warn,
Info,
Error,
Fatal
}
结果:
注意事项:
- 我看你有几个悬而未决的问题WPF,你看起来很沮丧了。不要。这是一个美丽而优秀的框架。我创造了这个例子,希望你能看到它的真正魅力。如果没有更多的代码和努力,你就不可能在winforms中实现同样的例子。
- 看看这段代码实际上是多么简单而美丽。我正在广泛使用WPF的数据绑定功能,这使得一切都变得更容易。
- 请注意,没有任何引用或操作任何UI元素的代码行。我所做的只是创建适当的数据结构,然后创建适当的用户界面来显示/操作它。
- 数据和用户界面之间的“胶合”是
DataContext
属性,这是所有XAML绑定都解决的问题。 - 如果你来自winforms或其他传统背景,你真的需要忘记你所知道的一切,并拥抱MVVM(点击链接它不是维基百科)。
- 同样,我不熟悉NLog,所以我不确定我创建的数据结构是否符合您的需求。无论如何,让我知道。
- 让我知道你是否需要进一步的帮助。我很乐意在WPF的第一步中为您提供帮助。
相关问题
- 1. WPF日期选择器控件.net 3.5
- 2. wpf选择列表框中的控件
- 3. 为WPF选择布局控件项目
- 4. WPF页面布局控件选择
- 5. Wpf自定义控件MouseOver和选择
- 6. 选择在TreeView控件WPF项目
- 7. 在WPF中选择并键入控件?
- 8. wpf datagrid行选择控制
- 9. WPF - 基于listviewitem选择更改控件。控件不更新
- 10. 将WPF用户控件选择传递给主机控件
- 11. WPF数据网格控件选择全部选项
- 12. XAML WPF:选项卡控件
- 13. 选项卡控件WPF
- 14. Datagrid行选择事件,WPF
- 15. WPF - 选择器 - 自定义控件 - SelectionChanged事件不会触发
- 16. WP7选择控件
- 17. iphone选择控件
- 18. WPF:选择/取消选择ListView的数据项目点击选择所有复选框控件
- 19. 在WPF中禁用控件的选择背景效果
- 20. WPF自定义“工具箱”选择器控件
- 21. Wpf自定义日期选择器用户控件
- 22. WPF移除选择/鼠标光泽效果在GridView控件
- 23. WPF用户控件 - 不能选择文本框
- 24. 什么是WPF WebBrowser控件的好选择?
- 25. WPF。模板选择器中的控件之间的绑定
- 26. 如何在WPF Grid控件中选择一行?
- 27. 如何从telerik WPF GridView控件中选择一行数据
- 28. WPF自定义控件:audiowaveform矩形选择滑块
- 29. WPF用户控件创建多个布局选择
- 30. 选择控件和DOM
这取决于你想如何让它看起来像?什么是 也许是一个简单的DataGrid? – 2013-03-28 07:19:08
也许是一个组合框?但这一切都取决于你想要如何。 – Tan 2013-03-28 07:52:59
那么这样的决定取决于各种因素。您想要展示的条目有多复杂?谁是前端的用户(技术背景)?你的用户界面的其他部分是什么样的?你有什么样的范例你必须遵循?当然,应该提供哪些功能? - 顺便说一句,我认为最好将这篇文章移到[ux.stackexchange.com](http://ux.stackexchange.com) – DHN 2013-03-28 08:16:35