2011-01-16 34 views
10

Tôi đang viết một ứng dụng Phone 7 và tôi muốn tham khảo các giá trị không đổi trong đánh dấu. Tôi tin rằng cách người ta phải làm điều này là thông qua x:Static.Tôi làm cách nào để sử dụng tiện ích mở rộng {x: tĩnh ...} cho các ứng dụng Silverlight Phone7?

Tuy nhiên, Visual Studio tiếp tục xác nhận quyền sở hữu không có kiến ​​thức về x:static. Nước sốt bí mật ở đây là gì? Tôi có những điều sau đây:

<phone:PhoneApplicationPage 
    ... 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    ... 

    <Image Height="{x:Static App.ImageHeight}" ... /> 
    ... 

Và tất nhiên:

nhắn
public partial class App : Application 
{ 
    public const double ImageHeight = 100; 
    ... 

Lỗi này là "Các loại 'x: tĩnh'. Không được tìm thấy Xác minh rằng ...".

Trả lời

17

x:Static chỉ khả dụng trong WPF - không phải Silverlight cho trình duyệt cũng không Silverlight cho Windows Phone 7 hỗ trợ tiện ích mở rộng đánh dấu này.

Cách giải quyết thông thường là tạo một lớp (không tĩnh) có các thuộc tính chỉ đơn giản là bọc các thuộc tính tĩnh mà bạn muốn, và tạo một thể hiện của tài nguyên đó và liên kết với nó theo cách đó.

Ví dụ *:

public class StaticSideEnums 
{ 
    public static Side Bid { get { return Side.Bid; } } 
    public static Side Ask { get { return Side.Ask; } } 
} 

Trong các nguồn lực (App.xaml):

<ResourceDictionary> 
    <local:StaticSideEnums x:Key="StaticSideEnums"/> 
</ResourceDictionary> 

Trong XAML nơi nó được sử dụng:

<toolkit:ListPicker Name="picker" SelectionChanged="OnSelectionChanged"> 
    <toolkit:ListPickerItem Content="Buy" Tag="{Binding Bid, Source={StaticResource StaticSideEnums}}" /> 
    <toolkit:ListPickerItem Content="Sell" Tag="{Binding Ask, Source={StaticResource StaticSideEnums}}" /> 
</toolkit:ListPicker> 

* Ví dụ này được lấy từ câu trả lời trong Using localized strings in a ListPicker populated from Enum

+0

Được rồi, tốt, có vẻ như rất nhiều công việc để có một hằng số. Nhưng, được rồi, nếu đó là như thế nào, đó là cách nó được. Cảm ơn. –

+2

Đối với trường hợp sử dụng cụ thể của bạn, có thể một Style sẽ tốt hơn? Sau đó, bạn có thể đặt Chiều cao thành bất kỳ thứ gì bạn muốn một lần, sử dụng Kiểu đó trên tất cả các yếu tố Hình ảnh và có cùng cấp "thay đổi một lần, áp dụng ở mọi nơi". –

+0

Đó là 'x: Tĩnh', với số vốn" S ". XAML phân biệt chữ hoa chữ thường ... –

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