एक WPF लेबल की स्टाइल प्रॉपर्टी को कोड में सेट करना?


82

App.xaml में, मेरे पास निम्नलिखित कोड है:

<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>

यह मेरे लेबल के लिए एक सामान्य टेम्पलेट प्रदान करने के लिए है।

मुख्य XAML कोड में, मेरे पास निम्नलिखित पंक्ति है:

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

हालाँकि, मैं कोड के माध्यम से स्टाइल प्रॉपर्टी को इनिशियलाइज़ करना चाहूंगा। मैं प्रयास कर चुका हूं:

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

तथा

label1.Style = "{StaticResource LabelTemplate}";

न ही समाधान मान्य था।

किसी भी सहायता की सराहना की जाएगी :)।


क्या UserControl के codebehind से ऐसा करने का कोई कारण है? शायद और अधिक सुरुचिपूर्ण समाधान हैं।
csteinmueller

जवाबों:


183

कोड में आप शैली प्राप्त करने की कोशिश कर रहे हैं? कोड के पीछे?

आपको यह लिखना चाहिए:

यदि आप कोड-पीछे हैं:

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

यदि आप कहीं और हैं

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

नीचे ध्यान दें:Style कीवर्ड के साथ नाम न रखेंTemplate , आप अंत में ए Styleऔर ए को भ्रमित करेंगे Template, और आपको ऐसा नहीं करना चाहिए जो दो अलग-अलग अवधारणाएं हैं।


मैंने "एप्लिकेशन" के बजाय "App" .Current.FindResource () का उपयोग करते हुए पाया।
alansiqueira27

मुझे FindResource नहीं मिला
वेल्श किंग

एक समाधान मिल जाने stackoverflow.com/questions/17704969/...
वेल्श राजा

इससे मुझे बहुत सहायता प्राप्त हुई। धन्यवाद ^ ^
13:33 बजे Dôn Kayt

3

कृपया अशक्त शैली के परिणाम की जांच करें या आप दुखी होंगे ... ... यदि (शैली! = अशक्त) यह। स्टाइल = शैली;


10
जब यह शून्य है, तो आप रो सकते हैं या समस्या को ठीक कर सकते हैं।
एलन

0

शायद एक पुराना सवाल है, लेकिन अगर आप W10 UWP ऐप की कोशिश कर रहे हैं, तो प्रत्येक ऑब्जेक्ट के संसाधन संग्रह या एप्लिकेशन ऑब्जेक्ट के संसाधन संग्रह का उपयोग करना चाहिए

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

कहाँ MyStyleTemplateName के एक संसाधन के रूप में परिभाषित किया जाना चाहिए इस

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.