2009-11-30 22 views
11

Có cách nào để nhúng một chuỗi trong XAML, cung cấp cho nó và ID và tham khảo nó sau này.Nhúng một System.String trong XAML

Tôi đã thử:

<Window x:Class="WpfApp1.Window1" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:System="clr-namespace:System;assembly=mscorlib" 
     Title="Window1" Height="300" Width="500"> 
     <Grid> 
      <System:String>Test</System:String> 
     </Grid> 
    </Window> 

Và nhận được lỗi:
Không thể thêm ví dụ của loại 'String' đến một bộ sưu tập các loại 'UIElementCollection'. Chỉ cho phép các mục thuộc loại 'UIElement'.

Tôi có thể làm điều này nếu tôi lồng chuỗi vào nơi khác trong XAML không? hoặc bên trong một phần tử UI không? Sau đó, tôi chỉ cần cung cấp cho nó một thuộc tính Tên?

Trả lời

27

Bạn nên sử dụng Window.Resources

Dưới đây là một ví dụ cho Trang, trong trường hợp của bạn nó sẽ được Window.Resources tag:

<Page 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:System="clr-namespace:System;assembly=mscorlib"> 
    <Page.Resources> 
    <System:String x:Key="MyString">Hello</System:String> 
    </Page.Resources> 
    <Grid> 
    <TextBlock Text="{StaticResource MyString}"></TextBlock> 
    </Grid> 
</Page> 
+0

Và miễn là chuỗi ở trong đó, nó sẽ ổn chứ? – BuddyJoe

+2

Có. Từ điển 'Resources' có thể chứa các đối tượng thuộc bất kỳ kiểu nào và bạn có thể tham khảo nó bằng cách sử dụng' {StaticResource} 'thông qua' x: Key' của nó sau này. –

+0

Hãy xem ví dụ, tôi đã cập nhật câu trả lời của mình ... –

1

Có một tham chiếu đến chuỗi sẽ không cho phép bạn thay đổi nó sau này, kể từ các chuỗi không thay đổi, như Yacoder gợi ý, chỉ cần đặt nó trong phần <Window.Resources>. Một cái gì đó như:

<Window.Resources> 
     <System:String x:Key="TestString">Test</System:String> 
</Window.Resources> 

Nếu bạn cần thay đổi giá trị của chuỗi xuất hiện trong lưới, bạn sẽ muốn sử dụng TextBlock hoặc điều khiển khác có thuộc tính Nội dung có thể được đặt.

2

Trong thẻ Application bạn cần bao gồm những điều sau đây:

xmlns:system="clr-namespace:System;assembly=mscorlib"> 

không có mã trên, Visual Studio sẽ phàn nàn về một tài liệu tham khảo lắp ráp thiếu.

+0

Xin lỗi, bỏ qua điều này, tôi thấy bạn đã bao gồm nó. các bài viết trên nên giải quyết vấn đề ur. – FruityMo

+4

Nếu bạn nghĩ rằng câu trả lời của riêng bạn không hữu ích, bạn có thể xóa nó bằng cách sử dụng liên kết xóa dưới câu trả lời. –

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