Visual Studio 2010 | .NET/WPF 4.0Màu DynamicResource không hoạt động cho BorderBrush trên một Border - Bug?
Tôi nghĩ rằng đây có thể là một lỗi WPF, nhưng tôi dường như không thể tìm thấy một báo cáo lỗi về nó. Để trang trải khả năng rằng tôi chỉ thiếu một cái gì đó hiển nhiên, tôi chuyển sang stackoverflow cho câu trả lời!
xem xét XAML này (không có gì trong codebehind):
<Window x:Class="DownExpanders.BorderTest"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="BorderTest" Height="300" Width="300">
<Window.Resources>
<Color x:Key="BackgroundColor" R="255" G="0" B="0" A="255"/>
<Color x:Key="BorderColor" R="0" G="0" B="255" A="255"/>
<SolidColorBrush x:Key="BorderColorBrush" Color="{DynamicResource BorderColor}"/>
</Window.Resources>
<Grid>
<Border BorderThickness="20">
<Border.Background>
<SolidColorBrush Color="{DynamicResource BackgroundColor}"/>
</Border.Background>
<Border.BorderBrush>
<SolidColorBrush Color="{DynamicResource BorderColor}"/>
</Border.BorderBrush>
</Border>
<Border Margin="40" BorderBrush="{DynamicResource BorderColorBrush}" BorderThickness="20"/>
</Grid>
</Window>
Trong nhà thiết kế, nó ám như mong đợi. Đường viền ngoài có viền màu xanh lớn và nền đỏ, đường viền bên trong có đường viền màu xanh lớn. Tuyệt quá.
Khi tôi chạy mã, đường viền ngoài có đường viền KHÔNG - có vẻ như nó không tải. Nền được đặt thành màu đỏ chính xác. Trong khi đó, đường viền bên trong không tải đường viền màu xanh của nó một cách chính xác.
Nếu tôi thay đổi tất cả "DynamicResource" thành "StaticResource", nó sẽ hiển thị chính xác khi chạy. Các mâu thuẫn thực sự là bugging tôi, và tôi không thể hình dung nó ra \
Vì vậy:.
- Tại sao không làm việc DynamicResource cho BorderBrush?
- Cho số 1, tại sao hiện hoạt động cho nền?
- Tại sao xác định rõ ràng bàn chải màu đồng nhất trong tài nguyên dường như khắc phục được sự cố?
EDIT:
Hình như đó là một lỗi mà MS quyết định không sửa chữa (nhờ Sheridan cho liên kết): http://connect.microsoft.com/VisualStudio/feedback/details/589898/wpf-border-borderbrush-does-not-see-changes-in-dynamic-resource
Thú vị, vẫn xảy ra trong. 4.5.50760 vì vậy nếu đó là lỗi mà họ chưa khắc phục được. – Andy
Ye chắc chắn sẽ nghĩ rằng đó là một lỗi. Bạn cũng có thể thêm vào báo cáo lỗi của bạn, Snoop báo cáo bàn chải của đường viền bên ngoài là 'Minh bạch' (Không có lỗi) và vấn đề này không xảy ra nếu bạn chỉ đặt Brush trực tiếp ngay cả đối với đường viền ngoài như trong' BorderBrush = "{DynamicResource BorderColorBrush } "'. Do đó trông giống như một vấn đề của khi SolidColorbrush cho BorderBrush đang được tạo ra từ một DynamicResource ** Màu **, nó được mọi thứ hơi say lên. Không chắc chắn có thể một số trường hợp lạ của cố gắng để khóa tài nguyên/truy cập chúng – Viv
oh cái gì khác tôi chỉ thấy quá, Nếu bạn di chuyển các nguồn lực đến một phạm vi cao hơn, nói 'App.xaml', nó hoạt động tốt cho mã chính xác của bạn – Viv