2010-04-15 46 views
8

Tôi đã tạo một ứng dụng WPF trong Visual Studio 2010 Express (C#) và thêm văn bản bên dưới vào Application.Resources trong App.xaml. Tôi thấy phong cách áp dụng cho cửa sổ trong thiết kế, nhưng khi tôi chạy ứng dụng, nền cửa sổ có màu trắng.Phong cách cửa sổ WPF không hoạt động khi chạy

Chạy trong Windows XP trên BootCamp trên MacBook Pro nếu đó là một yếu tố.

Cảm ơn trước,

Christian

<Style TargetType="{x:Type Window}"> 
     <Setter Property="Background"> 
      <Setter.Value> 
       <LinearGradientBrush StartPoint="0,0" EndPoint="0,1"> 
        <GradientStop Offset="0" Color="WhiteSmoke" /> 
        <GradientStop Offset="1" Color="Silver" /> 
       </LinearGradientBrush> 
      </Setter.Value> 
     </Setter> 

     <Setter Property="Padding" Value="20" /> 
    </Style> 

Trả lời

10

Microsoft đã sao chép vấn đề và có vẻ như nó có thể là một lỗi trong WPF 4.0.

https://connect.microsoft.com/VisualStudio/feedback/details/555322/global-wpf-styles-are-not-shown-when-using-2-levels-of-references

Sau khi nghiên cứu được thực hiện bởi người nộp lỗi, tôi mất tất cả các tập tin tài nguyên XAML cá nhân của chúng tôi được đưa vào từ điển tài nguyên sáp nhập và cắt và dán nội dung phong cách vào một UberStyles duy nhất. tệp xaml. Tôi tránh tất cả việc sử dụng MergedDictionaries.

Điều này giải quyết được vấn đề và thông tin phong cách của tôi từ ứng dụng WPF 3.5 của tôi đã trở lại với ứng dụng WPF 4.0 của tôi.

Để mắt của tôi đây là một lỗi rõ ràng trong WPF 4.0 - Tôi không chính xác chắc chắn làm thế nào bạn sẽ đúc này như là một tính năng và hành vi là không có giấy tờ. Tôi là một chút lo ngại về những tác động của điều này cho nền tảng WPF 4.0 nói chung. Bạn có thể nghĩ rằng điều này sẽ bị bắt trong thử nghiệm của Visual Studio 2010 Release!

Dù sao, hy vọng điều này sẽ hữu ích. Tôi đã bị điên bởi lỗi này kể từ khi chúng tôi nâng cấp lên VS2010 cách đây hai tuần.

0

Tình cờ gặp phải như sau:

How to set default WPF Window Style in app.xaml?

Câu trả lời là một phong cách sẽ không được áp dụng cho các loại có nguồn gốc.

+1

Tôi không chắc rằng đây là câu trả lời. Xem bài viết của tôi dưới đây ... có vẻ như nó thực sự là một lỗi. – JasonD

0

Tôi gặp vấn đề tương tự. Chúng tôi đã phát triển một thư viện với các phong cách tùy chỉnh cho mọi điều khiển standart, nó hoạt động tốt dưới .net 3.5 ở cả deigner và khi chạy. Hôm nay chúng tôi quyết định chuyển dự án của mình sang .net4 (wpf 4 có nhiều tính năng mới đẹp). Sau đó, trong thời gian chạy, tất cả các kiểu như thế này không hoạt động trong thời gian chạy, nhưng áp dụng tại nhà thiết kế:

<Style TargetType={x:Type Button}> 
     <Setter Property="FontSize" Value="14"/> 
</Style> 

Kiểu đã được giải quyết. Nhưng chúng ta cần đặt kiểu mặc định cho một chủ đề, không phải đặt kiểu cho mỗi điều khiển.

+0

Bạn đang sử dụng các điều khiển tiêu chuẩn hoặc bạn phân lớp từ các điều khiển tiêu chuẩn? Nếu bạn kế thừa từ họ thì câu trả lời của tôi bên dưới sẽ cung cấp cho bạn thông tin chi tiết. Nếu không, tôi không chắc chắn vì tôi không biết những gì có liên quan trong việc nâng cấp các ứng dụng WPF từ 3,5 lên 4. –

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