Tôi có một WPF ResourceDictionary với TextBlock sau:Phạm vi của StaticResource trong tài nguyên WPF là gì?
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis}}">
</TextBlock>
Các ResourceDictionary được bao gồm trong App.xaml dưới MergedDictionaries:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="MyResourceDictionary.xaml"/>
Trong App.xaml tôi đã xác định chuyển đổi BoolToVis (một lần nữa , dưới Application.Resources
)
<BooleanToVisibilityConverter x:Key="BoolToVis" />
Khi tôi khởi động ứng dụng của mình - Tôi nhận được XamlParseExcep sau tion:
"Cung cấp giá trị trên 'System.Windows.Markup.StaticResourceHolder' ném một ngoại lệ."
Các InnerException là:
"Không thể tìm thấy tài nguyên có tên là 'BoolToVis' tên Resource là trường hợp nhạy cảm.."
Tôi có thể tham khảo bộ chuyển đổi này trực tiếp với App.xaml (trên thực tế, khai báo XAML cụ thể là giống nhau) và trong các UserControls khác không có vấn đề gì.
Đoạn mã cụ thể này cũng hoạt động tốt theo .NET 4.0 RC (và Beta2). Lỗi này chỉ bắt đầu xảy ra khi tôi nâng cấp lên .NET 4.0 RTM.
Tôi có thể làm việc xung quanh nó bằng cách tuyên bố khác BooleanToVisibilityConverter
trong MyResourceDictionary.xaml và đề cập đến nó như vậy:
<TextBlock Visibility="{Binding Converter={StaticResource MyBoolProp ResourceKey=BoolToVis2}}">
</TextBlock>
lý do Bất kỳ lý do tại sao nên tôi cần phải làm điều này?
Có thể chúng tôi sẽ thực hiện tuyến đường thứ hai. Điều gì là như vậy bizzare là mã này chạy tốt trong RC, nhưng không phải là RTM. Đội ngũ dev của chúng tôi là "hỗn hợp" liên quan đến những người có phiên bản nào. Là một người nhận nuôi sớm, tôi đã vẽ rơm ngắn :). Cảm ơn! –