2013-03-30 8 views
5
<UserControl .....> 
    <DataTemplate DataType="{x:Type vm:AViewModel}"> 
    <vw:AView /> 
    </DataTemplate> 

    <DataTemplate DataType="{x:Type vm:BViewModel}"> 
    <vw:BView /> 
    </DataTemplate> 

    <ContentControl x:Name="chartScreen" Content="{Binding Screen}" Background="Yellow" /> 
</UserControl> 

जैसा कि आप उपरोक्त कोड से देख सकते हैं, ContentControl ViewModel की स्क्रीन प्रॉपर्टी को बाध्यकारी के माध्यम से अपनी सामग्री सेट कर रहा है। कुछ हालत के आधार पर स्क्रीन प्रॉपर्टी AViewModel या BViewModel का एक उदाहरण लौटाएगी। समस्या यह है कि, जब UserControl स्क्रीन पर लोड होता है, तो स्क्रीन प्रॉपर्टी शून्य होती है, इसलिए अभी तक कोई सामग्री सेट नहीं है। इस बिंदु पर, मैं ContentControl के लिए कुछ पृष्ठभूमि सेट करना चाहता हूं, लेकिन मुझे यह तरीका नहीं मिल रहा है कि यह कैसे करें? पृष्ठभूमि = "पीला" कुछ भी नहीं करता है ...सामग्री नियंत्रण की पृष्ठभूमि सेट करना

कोई विचार सामग्री कंट्रोल की पृष्ठभूमि कैसे सेट करें? यह बैकगाउंड हमेशा लागू किया जाना चाहिए, भले ही सामग्री AView या Biew, या शून्य प्रदर्शित हो।

उत्तर

5

बस लपेट अपने ContentControl एक Border

<Border Background="Yellow"> 
    <ContentControl x:Name="chartScreen" 
        Content="{Binding Screen}" /> 
</Border> 

में यदि सब आप अपने UserControl में अपने ContentControl है, बस UserControl पर ही Background निर्धारित किया है। इससे अतिरिक्त Border भी हटा दिया जाएगा।

1

कुछ इस तरह का प्रयास करें:

<ContentControl x:Name="chartScreen" Content="{Binding Screen}" Background="Yellow"> 
     <ContentControl.Triggers>  
      <Trigger Property="Content" Value="{x:Null}"> 
       <Trigger.Value> 
        <Border Background="Yellow"/> 
       </Trigger.Value> 
      </Trigger> 
     </ContentControl.Triggers>  
</ContentControl> 
+0

मुझे पसंद है @ पीछे मुड़कर देखें तो विव के जवाब .. –

+0

मैं आप के रूप में उपयोगी जवाब देने का प्रतीक होगा, हालांकि यह नहीं करता है सवाल का काफी जवाब नहीं है। यदि आप अंतिम भाग वाक्य पढ़ते हैं, तो पृष्ठभूमि हमेशा लागू नहीं की जानी चाहिए, न कि जब सामग्री शून्य हो। – Goran

+0

ओओ .. मुझे वह हिस्सा याद आया। –

0

WPF में कुछ इस तरह का प्रयास करें:

<ContentControl> 
     <ContentControl.Style> 
     <Style TargetType="ContentControl"> 
      <Style.Triggers> 
      <DataTrigger Binding="{Binding Content}" Value="{x:Null}"> 
       <Setter Property="Content"> 
       <Setter.Value> 
        <Rectangle Width="100" Height="100" Fill="Blue" /> 
       </Setter.Value> 
       </Setter> 
      </DataTrigger> 
      </Style.Triggers> 
     </Style> 
     </ContentControl.Style> 
</ContentControl> 
संबंधित मुद्दे