سؤال

واعتدت XamlPadX لنسخ defaultstyle تحرير وسرد ولصق الى بلدي ملتقيات التطبيق.

والآن بعد أن كنت لا يمكن فتح منسدل بعد الآن. إذا كنت اضغط على زر القائمة المنسدلة، لا يحدث أي شيء.

وشيء آخر هو التنصت لي. ألطاف التطبيق بتصنيف ويعمل، المصمم يظهر لي خطأ:

<اقتباس فقرة>   

"" Control.Template "القيمة لا يمكن أن تسند إلى خاصية" الملكية ". نوع 'IFrameworkInputElement" لايوجد DependencyObjectType مطابقة. ".

وعلى السطر التالي:

<ComboBox Name="modifier" SelectedIndex="0" Style="{DynamicResource MyComboStyle}">
       <ComboBoxItem>1</ComboBoxItem>
       <ComboBoxItem>2</ComboBoxItem>
       <ComboBoxItem>3</ComboBoxItem>
</ComboBox>

وبسبب هذا لا تظهر مصمم لي السيطرة، لكنه يظهر بشكل صحيح عندما يتم تشغيل التطبيق.

ولكن عندما أعلن تحرير وسرد كما سيطرتها هناك أي خطأ مصمم:

<ComboBox x:Class="ModifierControl"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"    
    Style="{DynamicResource MyComboStyle}" >
</ComboBox>

وبعد ذلك يتم عرض أي خطأ مصمم.

هل كانت مفيدة؟

المحلول

وهنا القالب لتحرير وسرد التقطت مباشرة من مزيج. اسمحوا لي أن أعرف ما اذا كان يعمل.

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Microsoft_Windows_Themes="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Classic"
    x:Class="MyComboBoxStyle.MainWindow"
    x:Name="Window"
    Title="MainWindow"
    Width="640" Height="480">

    <Window.Resources>
        <Style x:Key="MyComboBoxStyle" TargetType="{x:Type ComboBox}">
            <Setter Property="FocusVisualStyle">
                <Setter.Value>
                    <Style>
                        <Setter Property="Control.Template">
                            <Setter.Value>
                                <ControlTemplate>
                                    <Rectangle Stroke="Black" StrokeDashArray="1 2" StrokeThickness="1" Margin="4,4,21,4" SnapsToDevicePixels="True"/>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </Setter.Value>
            </Setter>
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.WindowTextBrushKey}}"/>
            <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.WindowBrushKey}}"/>
            <Setter Property="Margin" Value="0"/>
            <Setter Property="Padding" Value="2,1"/>
            <Setter Property="ScrollViewer.HorizontalScrollBarVisibility" Value="Auto"/>
            <Setter Property="ScrollViewer.VerticalScrollBarVisibility" Value="Auto"/>
            <Setter Property="ScrollViewer.CanContentScroll" Value="True"/>
            <Setter Property="VerticalContentAlignment" Value="Center"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ComboBox}">
                        <Border SnapsToDevicePixels="True" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                            <Grid>
                                <Microsoft_Windows_Themes:ClassicBorderDecorator x:Name="Border" Background="{TemplateBinding Background}" BorderStyle="Sunken" BorderThickness="2">
                                    <Microsoft_Windows_Themes:ClassicBorderDecorator.BorderBrush>
                                        <SolidColorBrush/>
                                    </Microsoft_Windows_Themes:ClassicBorderDecorator.BorderBrush>
                                    <Popup x:Name="PART_Popup" AllowsTransparency="True" IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Focusable="False">
                                        <Microsoft_Windows_Themes:SystemDropShadowChrome x:Name="Shdw" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=Border}" Color="Transparent">
                                            <Border x:Name="DropDownBorder" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1">
                                                <ScrollViewer>
                                                    <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.DirectionalNavigation="Contained"/>
                                                </ScrollViewer>
                                            </Border>
                                        </Microsoft_Windows_Themes:SystemDropShadowChrome>
                                    </Popup>
                                </Microsoft_Windows_Themes:ClassicBorderDecorator>
                                <DockPanel Margin="2">
                                    <FrameworkElement Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" DockPanel.Dock="Right"/>
                                    <Border x:Name="SelectedItemBorder" Margin="{TemplateBinding Padding}">
                                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="1" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" Content="{TemplateBinding SelectionBoxItem}" ContentStringFormat="{TemplateBinding SelectionBoxItemStringFormat}" ContentTemplate="{TemplateBinding SelectionBoxItemTemplate}"/>
                                    </Border>
                                </DockPanel>
                                <ToggleButton Margin="2" MinHeight="0" MinWidth="0" Width="Auto" Focusable="False" ClickMode="Press" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
                                    <ToggleButton.Style>
                                        <Style TargetType="{x:Type ToggleButton}">
                                            <Setter Property="MinWidth" Value="0"/>
                                            <Setter Property="MinHeight" Value="0"/>
                                            <Setter Property="Width" Value="NaN"/>
                                            <Setter Property="Height" Value="NaN"/>
                                            <Setter Property="Background" Value="Transparent"/>
                                            <Setter Property="BorderBrush">
                                                <Setter.Value>
                                                    <SolidColorBrush/>
                                                </Setter.Value>
                                            </Setter>
                                            <Setter Property="BorderThickness" Value="2"/>
                                            <Setter Property="Template">
                                                <Setter.Value>
                                                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                                                        <DockPanel SnapsToDevicePixels="True" Background="{TemplateBinding Background}" LastChildFill="False">
                                                            <Microsoft_Windows_Themes:ClassicBorderDecorator x:Name="Border" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" DockPanel.Dock="Right" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" BorderBrush="{TemplateBinding BorderBrush}" BorderStyle="AltRaised" BorderThickness="{TemplateBinding BorderThickness}">
                                                                <Path Fill="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M0,0L3.5,4 7,0z"/>
                                                            </Microsoft_Windows_Themes:ClassicBorderDecorator>
                                                        </DockPanel>
                                                        <ControlTemplate.Triggers>
                                                            <Trigger Property="IsChecked" Value="True">
                                                                <Setter Property="BorderStyle" TargetName="Border" Value="AltPressed"/>
                                                            </Trigger>
                                                        </ControlTemplate.Triggers>
                                                    </ControlTemplate>
                                                </Setter.Value>
                                            </Setter>
                                            <Style.Triggers>
                                                <Trigger Property="IsEnabled" Value="False">
                                                    <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/>
                                                </Trigger>
                                            </Style.Triggers>
                                        </Style>
                                    </ToggleButton.Style>
                                </ToggleButton>
                            </Grid>
                        </Border>
                        <ControlTemplate.Triggers>
                            <MultiTrigger>
                                <MultiTrigger.Conditions>
                                    <Condition Property="IsSelectionBoxHighlighted" Value="True"/>
                                    <Condition Property="IsDropDownOpen" Value="False"/>
                                </MultiTrigger.Conditions>
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.HighlightTextBrushKey}}"/>
                            </MultiTrigger>
                            <Trigger Property="IsSelectionBoxHighlighted" Value="True">
                                <Setter Property="Background" TargetName="SelectedItemBorder" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
                            </Trigger>
                            <Trigger Property="HasItems" Value="False">
                                <Setter Property="MinHeight" TargetName="DropDownBorder" Value="95"/>
                            </Trigger>
                            <Trigger Property="IsEnabled" Value="False">
                                <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                            </Trigger>
                            <Trigger Property="IsGrouping" Value="True">
                                <Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
                            </Trigger>
                            <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="True">
                                <Setter Property="Margin" TargetName="Shdw" Value="0,0,5,5"/>
                                <Setter Property="Color" TargetName="Shdw" Value="#71000000"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
            <Style.Triggers>
                <Trigger Property="IsEditable" Value="True">
                    <Setter Property="IsTabStop" Value="False"/>
                    <Setter Property="Padding" Value="1"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="{x:Type ComboBox}">
                                <Border SnapsToDevicePixels="True" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                                    <Grid>
                                        <Microsoft_Windows_Themes:ClassicBorderDecorator x:Name="Border" Background="{TemplateBinding Background}" BorderStyle="Sunken" BorderThickness="2">
                                            <Microsoft_Windows_Themes:ClassicBorderDecorator.BorderBrush>
                                                <SolidColorBrush/>
                                            </Microsoft_Windows_Themes:ClassicBorderDecorator.BorderBrush>
                                            <Popup x:Name="PART_Popup" AllowsTransparency="True" IsOpen="{TemplateBinding IsDropDownOpen}" Placement="Bottom" PopupAnimation="{DynamicResource {x:Static SystemParameters.ComboBoxPopupAnimationKey}}" Focusable="False">
                                                <Microsoft_Windows_Themes:SystemDropShadowChrome x:Name="Shdw" MaxHeight="{TemplateBinding MaxDropDownHeight}" MinWidth="{Binding ActualWidth, ElementName=Border}" Color="Transparent">
                                                    <Border x:Name="DropDownBorder" Background="{DynamicResource {x:Static SystemColors.WindowBrushKey}}" BorderBrush="{DynamicResource {x:Static SystemColors.WindowFrameBrushKey}}" BorderThickness="1">
                                                        <ScrollViewer>
                                                            <ItemsPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" KeyboardNavigation.DirectionalNavigation="Contained"/>
                                                        </ScrollViewer>
                                                    </Border>
                                                </Microsoft_Windows_Themes:SystemDropShadowChrome>
                                            </Popup>
                                        </Microsoft_Windows_Themes:ClassicBorderDecorator>
                                        <ToggleButton Margin="2" MinHeight="0" MinWidth="0" Width="Auto" Focusable="False" ClickMode="Press" IsChecked="{Binding IsDropDownOpen, Mode=TwoWay, RelativeSource={RelativeSource TemplatedParent}}">
                                            <ToggleButton.Style>
                                                <Style TargetType="{x:Type ToggleButton}">
                                                    <Setter Property="MinWidth" Value="0"/>
                                                    <Setter Property="MinHeight" Value="0"/>
                                                    <Setter Property="Width" Value="NaN"/>
                                                    <Setter Property="Height" Value="NaN"/>
                                                    <Setter Property="Background" Value="Transparent"/>
                                                    <Setter Property="BorderBrush">
                                                        <Setter.Value>
                                                            <SolidColorBrush/>
                                                        </Setter.Value>
                                                    </Setter>
                                                    <Setter Property="BorderThickness" Value="2"/>
                                                    <Setter Property="Template">
                                                        <Setter.Value>
                                                            <ControlTemplate TargetType="{x:Type ToggleButton}">
                                                                <DockPanel SnapsToDevicePixels="True" Background="{TemplateBinding Background}" LastChildFill="False">
                                                                    <Microsoft_Windows_Themes:ClassicBorderDecorator x:Name="Border" Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" DockPanel.Dock="Right" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" BorderBrush="{TemplateBinding BorderBrush}" BorderStyle="AltRaised" BorderThickness="{TemplateBinding BorderThickness}">
                                                                        <Path Fill="{TemplateBinding Foreground}" HorizontalAlignment="Center" VerticalAlignment="Center" Data="M0,0L3.5,4 7,0z"/>
                                                                    </Microsoft_Windows_Themes:ClassicBorderDecorator>
                                                                </DockPanel>
                                                                <ControlTemplate.Triggers>
                                                                    <Trigger Property="IsChecked" Value="True">
                                                                        <Setter Property="BorderStyle" TargetName="Border" Value="AltPressed"/>
                                                                    </Trigger>
                                                                </ControlTemplate.Triggers>
                                                            </ControlTemplate>
                                                        </Setter.Value>
                                                    </Setter>
                                                    <Style.Triggers>
                                                        <Trigger Property="IsEnabled" Value="False">
                                                            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/>
                                                        </Trigger>
                                                    </Style.Triggers>
                                                </Style>
                                            </ToggleButton.Style>
                                        </ToggleButton>
                                        <DockPanel Margin="2">
                                            <FrameworkElement Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}" DockPanel.Dock="Right"/>
                                            <TextBox x:Name="PART_EditableTextBox" Margin="{TemplateBinding Padding}" HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}" IsReadOnly="{Binding IsReadOnly, RelativeSource={RelativeSource TemplatedParent}}">
                                                <TextBox.Style>
                                                    <Style TargetType="{x:Type TextBox}">
                                                        <Setter Property="OverridesDefaultStyle" Value="True"/>
                                                        <Setter Property="AllowDrop" Value="True"/>
                                                        <Setter Property="MinWidth" Value="0"/>
                                                        <Setter Property="MinHeight" Value="0"/>
                                                        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
                                                        <Setter Property="Template">
                                                            <Setter.Value>
                                                                <ControlTemplate TargetType="{x:Type TextBox}">
                                                                    <ScrollViewer x:Name="PART_ContentHost" Background="Transparent" Focusable="False" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden"/>
                                                                </ControlTemplate>
                                                            </Setter.Value>
                                                        </Setter>
                                                    </Style>
                                                </TextBox.Style>
                                            </TextBox>
                                        </DockPanel>
                                    </Grid>
                                </Border>
                                <ControlTemplate.Triggers>
                                    <Trigger Property="HasItems" Value="False">
                                        <Setter Property="MinHeight" TargetName="DropDownBorder" Value="95"/>
                                    </Trigger>
                                    <Trigger Property="HasDropShadow" SourceName="PART_Popup" Value="True">
                                        <Setter Property="Margin" TargetName="Shdw" Value="0,0,5,5"/>
                                        <Setter Property="Color" TargetName="Shdw" Value="#71000000"/>
                                    </Trigger>
                                    <Trigger Property="IsEnabled" Value="False">
                                        <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                                        <Setter Property="Background" Value="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"/>
                                    </Trigger>
                                    <Trigger Property="IsGrouping" Value="True">
                                        <Setter Property="ScrollViewer.CanContentScroll" Value="False"/>
                                    </Trigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Window.Resources>

    <Grid x:Name="LayoutRoot">
        <ComboBox HorizontalAlignment="Left" Margin="111,156,0,0" Style="{DynamicResource MyComboBoxStyle}" VerticalAlignment="Top" Width="197" Height="25"/>
    </Grid>
</Window>

نصائح أخرى

وأول ما يتبادر إلى ذهني سيكون لتغيير الخط المذكور أدناه للوصول إلى الموارد كما StaticResource. وهذا يعطي خطأ ترجمة إذا كان المترجم لم يجد المورد. أيضا، لا تأكد من تحديد مورد قبل السطر حيث كنت فعلا استخدامها.

Style="{DynamicResource MyComboStyle}"
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top