2012-06-27 64 views
7

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?

+0

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

Trả lời

3
<UserControl x:Class="My.LoggerControl" 


xmlns:local="clr-namespace:My.LogTest" 

Có vẻ như bạn có thể đã phạm sai lầm trong việc đặt tên không? LoggerControl được liệt kê như là không gian tên My, trong khi bạn đang nhập My.LogTest và gán nó vào địa chỉ tiền tố xml-prefix. Thay đổi điều này thành:

xmlns:local="clr-namespace:My" 

Và tôi nghĩ nó sẽ hoạt động. Nếu không, hãy sửa chữa khai báo LoggerControl.

+0

Cũng được phát hiện. Đó là một sai lầm trong cách tôi sao chép mã và loại bỏ các tài liệu tham khảo cho chủ nhân của tôi, mặc dù. Các không gian tên tôi đang sử dụng là chính xác. – IanGilham

Các vấn đề liên quan