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