मैं WPF बताना चाहता हूँ: "TextBlock कोई डेटा नहीं है, तो यह नहीं दिखाते।"जब कोई डेटा नहीं होता है तो आप एक एक्सएएमएल टेक्स्टब्लॉक को कैसे पतन कर सकते हैं?
TRY # 1 एक सरल ट्रिगर साथ उत्पादन त्रुटि "'पाठ' सदस्य है मान्य नहीं है क्योंकि यह एक योग्यता प्रकार का नाम "नहीं है:।
<StackPanel Margin="10">
<TextBlock Padding="10" Background="Yellow" Text="{Binding MainMessage}">
<TextBlock.Triggers>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</TextBlock.Triggers>
</TextBlock>
</StackPanel>
TRY # 2 एक शैली ट्रिगर के साथ टी का उत्पादन वह त्रुटि प्रकार 'शैली' एक सार्वजनिक प्रकार कनवर्टर वर्ग शामिल नहीं है:
<UserControl x:Class="TestItemsSource234.Views.SmartForm"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<Style x:Key="MainMessageStyle" TargetType="TextBlock">
<Style.Triggers>
<Trigger>
<Trigger Property="Text" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<StackPanel Margin="10">
<TextBlock Style="MainMessageStyle" Padding="10" Background="Yellow" Text="{Binding MainMessage}"/>
</StackPanel>
</UserControl>
TRY # 3 एक शैली DataTrigger के साथ एक ही त्रुटि प्रकार 'शैली' का उत्पादन शामिल नहीं है एक सार्वजनिक प्रकार कनवर्टर वर्ग:
<UserControl x:Class="TestItemsSource234.Views.SmartForm"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<Style x:Key="MainMessageStyle" TargetType="TextBlock">
<Style.Triggers>
<Trigger>
<DataTrigger Binding="{Binding MainMessage}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<StackPanel Margin="10">
<TextBlock Style="MainMessageStyle" Padding="10" Background="Yellow" Text="{Binding MainMessage}"/>
</StackPanel>
</UserControl>
TRY # 4: ठीक है, कि मेरा एक गूंगा निरीक्षण किया गया था, भूल गया StaticResource, लेकिन फिर भी दोनों # 2 की कोशिश करो और # 3 का प्रयास करें एक नया त्रुटि शैली में टाइप System.Windows.Trigger मिल अज्ञात है:
<UserControl x:Class="TestItemsSource234.Views.SmartForm"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<Style x:Key="MainMessageStyle" TargetType="TextBlock">
<Style.Triggers>
<Trigger>
<Trigger Property="Text" Value="">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<StackPanel Margin="10">
<TextBlock Style="{StaticResource MainMessageStyle}" Padding="10" Background="Yellow" Text="{Binding MainMessage}"/>
</StackPanel>
</UserControl>
तो कैसे मैं यह कर सकता हूं?
उत्तर:
ठीक है, इतना है कि एक खुश अंत के साथ करना कष्टदायक वाक्य रचना शिकार था, यहाँ संस्करण है कि काम करता है, आशा है कि यह किसी को मदद मिलती है सबक सीख लिया:
- अगर ट्रिगर, तो शैली
- अगर शैली है, तो StaticResource
- अगर बाध्यकारी है, तो DataTrigger
कोड है कि काम करता है:
<UserControl x:Class="TestItemsSource234.Views.SmartForm"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<UserControl.Resources>
<Style x:Key="MainMessageStyle" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding MainMessage}" Value="{x:Null}">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<StackPanel Margin="10">
<ItemsControl
ItemsSource="{Binding DataTypeViews}"/>
<TextBlock Style="{StaticResource MainMessageStyle}" Padding="10" Background="Yellow" Text="{Binding MainMessage}"/>
</StackPanel>
</UserControl>
उह। डब्ल्यूपीएफ इतना भयानक क्यों है? – PeterAllenWebb
डब्ल्यूपीएफ टीम के लिए कोई बहाना नहीं है कि क्यों # 4 काम नहीं करता है! डब्ल्यूपीएफ इतना गुप्त क्यों है? –