2012-05-21 35 views
53

Trong App.xaml, tôi có đoạn mã sau:Đặt thuộc tính Kiểu của Nhãn WPF trong mã?

<Application.Resources> 
    <Style x:Key="LabelTemplate" TargetType="{x:Type Label}"> 
     <Setter Property="Height" Value="53" /> 
     <Setter Property="Width" Value="130" /> 
     <Setter Property="HorizontalAlignment" Value="Left" /> 
     <Setter Property="Margin" Value="99,71,0,0" /> 
     <Setter Property="VerticalAlignment" Value= "Top" /> 
     <Setter Property="Foreground" Value="#FFE75959" /> 
     <Setter Property="FontFamily" Value="Calibri" /> 
     <Setter Property="FontSize" Value="40" /> 
    </Style> 
</Application.Resources> 

này nhằm cung cấp một khuôn mẫu chung cho nhãn của tôi.

Trong đoạn mã XAML chính, tôi có dòng mã sau đây:

<Label Content="Movies" Style="{StaticResource LabelTemplate}" Name="label1" /> 

Tuy nhiên, tôi muốn khởi tạo thuộc tính Phong cách thông qua mã. Tôi đã thử:

label1.Style = new Style("{StaticResource LabelTemplate}"); 

label1.Style = "{StaticResource LabelTemplate}"; 

Cả Giải pháp là hợp lệ.

Mọi trợ giúp sẽ được đánh giá cao :).

+0

Có lý do nào để thực hiện điều này từ codebehind của UserControl không? Có lẽ có nhiều giải pháp thanh lịch hơn. – csteinmueller

Trả lời

127

Bạn đang cố gắng lấy kiểu mã ở đâu? Mã ẩn?

Bạn nên viết này:

Nếu bạn đang ở trong code-behind:

Style style = this.FindResource("LabelTemplate") as Style; 
label1.Style = style; 

Nếu bạn ở một nơi khác

Style style = Application.Current.FindResource("LabelTemplate") as Style; 
label1.Style = style; 

dưới lưu ý: không đặt tên Style bằng từ khóa Template, cuối cùng bạn sẽ kết thúc nhầm lẫn một Style và một số Template và bạn không nên vì đó là hai khái niệm khác nhau.

+1

Nice One tiếp tục gửi đề xuất tốt .... –

+0

Tôi tìm thấy bằng cách sử dụng "Ứng dụng" .Current.FindResource() thay vì "Ứng dụng". – Seva

+0

Tôi nhận được FindResource không tìm thấy –

2

Vui lòng kiểm tra kết quả kiểu trống hoặc bạn sẽ buồn ... ... if (style! = Null) this.Style = style;

+5

Khi nó là rỗng, bạn có thể khóc hoặc man-up và sửa vấn đề . – Allen

0

Có lẽ một câu hỏi cũ, nhưng nếu bạn đang cố gắng ứng dụng W10 UWP phải sử dụng bộ sưu tập các nguồn lực của từng đối tượng hoặc các nguồn lực tập hợp các đối tượng Application

KeyValuePair<object,object> styl = this.Resources 
    .Where(x => x.Key.ToString() == "MyStyleTemplateName") 
    .FirstOrDefault(); 
if (styl.Value != null) 
    Style MyStyle = (Style)styl.Value; 

đâu MyStyleTemplateName phải được định nghĩa như là một nguồn tài nguyên của này

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