मेरे पास एक बटन है जो यह सुनिश्चित करने के लिए 2 comboboxes को देख रहा है कि यह सक्षम होने से पहले उनके पास मूल्य है। समस्या यह है कि मैं जिस तरह से कर रहा हूं वह मेरी थीम प्रोजेक्ट में घोषित डिफ़ॉल्ट शैली को ओवरराइट कर रहा है।WPF बटन IsEnabled कॉम्बोबॉक्स चयन के आधार पर डिफ़ॉल्ट शैली ओवरराइटिंग
<Button x:Name="btnOK" VerticalAlignment="Center" Content="OK" IsDefault="True" Margin="0" Click="btnOK_Click">
<Button.Style>
<Style BasedOn="{StaticResource DefaultButton}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ddlWageTypes, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=ddlJobTitles, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
मैं शैली टैग करने के लिए basedon = "{StaticResouce MyDefaultButtonStyleName}" जोड़ने की कोशिश की है, लेकिन यह क्रम पर चल रही है।
त्रुटि "System.Windows.Style 'मान ऑब्जेक्ट' System.Windows.Controls.Button 'की संपत्ति' शैली 'को असाइन नहीं किया जा सकता है। केवल लक्ष्य प्रकार वाले स्टाइल पर आधारित हो सकता है जो मूल प्रकार है' IFrameworkInputElement '। मार्कअप फ़ाइल में ऑब्जेक्ट' System.Windows.Style 'पर त्रुटि "
क्या डिफ़ॉल्ट शैली को ओवरराइट किए बिना XAML में ऐसा करना था।
संपादित करें: कोड नमूना अपडेट किया गया। मुझे OKButtonStyle पर एक त्रुटि मिलती है, "संपत्ति 'संसाधन' में तत्व नहीं जोड़ सकता है, क्योंकि संपत्ति में केवल एक बाल तत्व हो सकता है यदि यह एक स्पष्ट संग्रह टैग का उपयोग करता है। मार्कअप फ़ाइल में ऑब्जेक्ट 'System.Windows.Style' पर त्रुटि"
<UserControl x:Class="UK.Budgeting.XBAP.ShiftDiff.NewFTEPremiumPaySummary"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:compModel="clr-namespace:System.ComponentModel;assembly=WindowsBase"
xmlns:local="clr-namespace:UK.Budgeting.XBAP.ShiftDiff">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="CellTemplates.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
<Style TargetType="{x:Type Button}" x:Key="OKButtonStyle" BasedOn="{StaticResource DefaultButton}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=ddlWageTypes, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
<DataTrigger Binding="{Binding ElementName=ddlJobTitles, Path=SelectedItem}" Value="{x:Null}">
<Setter Property="Button.IsEnabled" Value="false"/>
</DataTrigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
<Grid>
<Rectangle Style="{StaticResource DialogRectangle}"/>
<Border Style="{StaticResource DialogBorder}">
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" Background="White">
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition Width="5"/>
<ColumnDefinition MinWidth="300"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="2"/>
<RowDefinition/>
<RowDefinition Height="2"/>
<RowDefinition/>
<RowDefinition Height="2"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Style="{StaticResource LabelStyle}">Wage Type</TextBlock>
<TextBlock Grid.Column="0" Grid.Row="2" Style="{StaticResource LabelStyle}">Job Title</TextBlock>
<ComboBox x:Name="ddlWageTypes" VerticalAlignment="Top" Grid.Column="2" Grid.Row="0"
DisplayMemberPath="DisplayName"
SelectedValuePath="WageTypeCode"/>
<ComboBox x:Name="ddlJobTitles" VerticalAlignment="Top" Grid.Column="2" Grid.Row="2"
DisplayMemberPath="JobTitle"
SelectedValuePath="JobCode"/>
<StackPanel Grid.Column="2" Grid.Row="6" VerticalAlignment="Top" Orientation="Horizontal" Margin="5">
<Button x:Name="btnOK" VerticalAlignment="Center" Content="OK" IsDefault="True" Margin="0" Click="btnOK_Click" Style="{StaticResource OKButtonStyle}"/>
<Button x:Name="btnCancel" VerticalAlignment="Center" Content="Cancel" IsCancel="True" Margin="10,0,0,0" Click="btnCancel_Click"/>
</StackPanel>
</Grid>
</Border>
</Grid>
</UserControl>
आप भी हमें OKButtonStyle के लिए परिभाषा दिखाने सकते हैं? –
बटन के अंदर शैली। स्टाइल को एक लक्ष्य टाइप की आवश्यकता है। –