Tôi nghĩ rằng tôi thiếu một thứ gì đó nên hiển nhiên ở đây, nhưng tôi đang vẽ một ô trống trên bảng này.Cách thêm UserControl vào Bảng điều khiển trên Cửa sổ WPF
tôi đã xây dựng một usercontrol rất thô sơ có chứa gì khác hơn là một TextBox
để sử dụng như một cửa sổ đăng nhập:
<UserControl x:Class="My.LoggerControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
x:Name="LoggerView">
<Grid x:Name="LayoutRoot">
<TextBox x:Name="LogWindow" AcceptsReturn="True"/>
</Grid>
</UserControl>
Tôi không mong đợi điều đó là cách tốt nhất để làm điều đó, nhưng nó nên đủ tốt cho một nguyên mẫu.
Mã-đằng sau rất đơn giản tương tự:
public partial class LoggerControl : UserControl, ILogger
{
public LoggerControl()
{
InitializeComponent();
}
private LogLevel level = LogLevel.Warning;
#region ILogger
public LogLevel Level
{
get { return level; }
set { level = value; }
}
public void OnError(string s)
{
if (level >= LogLevel.Error)
LogWindow.AppendText("ERROR:::" + s + "\n");
}
// ...
#endregion
}
Điều tôi không thể hình dung ra là làm thế nào để thêm điều khiển này để MainWindow.xaml
tôi. Đơn giản hóa, giả sử cửa sổ của tôi trông giống như sau:
<Window x:Class="My.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:My"
Title="Test" Height="350" Width="525">
<Grid>
<local:LoggerControl x:Name="LogView" />
</Grid>
</Window>
Ngay cả với thứ gì đó đơn giản như vậy, Nhà thiết kế trong Visual Studio 2010 không thể tải cửa sổ chính. Lỗi được đưa ra là:
Không thể thêm giá trị kiểu 'LoggerControl' vào từ điển bộ sưu tập kiểu 'UIElementCollection'.
Thông báo lỗi này chỉ có một lần truy cập không liên quan trong các công cụ tìm kiếm chính (cộng với bản sao) nên tôi không tìm thấy bất kỳ trợ giúp hữu ích nào. Tài liệu riêng của Microsoft dường như ngụ ý rằng điều này sẽ làm việc.
Bất kỳ ý tưởng nào về cách giải quyết vấn đề này?
Kỳ lạ, khi tôi xây dựng một ứng dụng thử nghiệm tối thiểu, tôi không có vấn đề này. Điều gì có thể gây ra điều này? – IanGilham