سؤال

هل من الممكن تحديث Borderbrush من Borderbrush القاححات التلقائي في وقت التشغيل؟ لا يبدو لي أن ضبط الحدود البربرية أو الخلفية.

حتى البيانات الأساسية مثل txtfoodsearch.borderbrush = يبدو أن solidcolorbrush (colors.red) لا يبدو أن هناك اختلافا بعد تحميل الصفحة.

بلدي xaml هو أدناه.

                <controls:AutoCompleteBox x:Name="MyAutoCompleteSample" Margin="17,24,58,32" FontSize="12">
                <controls:AutoCompleteBox.Style>
                    <Style TargetType="controls:AutoCompleteBox">
                        <Setter Property="IsTabStop" Value="False" />
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="controls:AutoCompleteBox">
                                    <Grid Margin="{TemplateBinding Padding}"
                     Background="{TemplateBinding Background}">
                                        <TextBox IsTabStop="True" x:Name="Text" Style="{TemplateBinding TextBoxStyle}" Margin="0"
                                         KeyDown="MyAutoCompleteSample_KeyDown"
                                        />
                                        <Popup x:Name="Popup">
                                            <Border x:Name="PopupBorder" HorizontalAlignment="Stretch" Opacity="0.0" BorderThickness="0" CornerRadius="3">
                                                <Border.RenderTransform>
                                                    <TranslateTransform X="1" Y="1" />
                                                </Border.RenderTransform>
                                                <Border.Background>
                                                    <SolidColorBrush Color="#11000000" />
                                                </Border.Background>
                                                <Border
                               HorizontalAlignment="Stretch"
                               Opacity="1.0"
                               Padding="0"
                               ToolTipService.ToolTip="Select or enter your food selection"
                               BorderThickness="{TemplateBinding BorderThickness}"
                               BorderBrush="{TemplateBinding BorderBrush}"
                               CornerRadius="3">
                                                    <Border.RenderTransform>
                                                        <TransformGroup>
                                                            <TranslateTransform X="-1" Y="-1" />
                                                        </TransformGroup>
                                                    </Border.RenderTransform>
                                                    <Border.Background>
                                                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                                            <GradientStop Color="#FFDDDDDD" Offset="0"/>
                                                            <GradientStop Color="#AADDDDDD" Offset="1"/>
                                                        </LinearGradientBrush>
                                                    </Border.Background>
                                                    <ListBox
                                       x:Name="SelectionAdapter"
                                       ScrollViewer.HorizontalScrollBarVisibility="Auto"
                                       ScrollViewer.VerticalScrollBarVisibility="Auto"
                                       ItemContainerStyle="{TemplateBinding ItemContainerStyle}"
                                       ItemTemplate="{TemplateBinding ItemTemplate}" />
                                                </Border>
                                            </Border>
                                        </Popup>
                                        <VisualStateManager.VisualStateGroups>
                                            <VisualStateGroup x:Name="PopupStates">
                                                <VisualStateGroup.Transitions>
                                                    <VisualTransition GeneratedDuration="0:0:0.1" To="PopupOpened" />
                                                    <VisualTransition GeneratedDuration="0:0:0.2" To="PopupClosed" />
                                                </VisualStateGroup.Transitions>
                                                <VisualState x:Name="PopupOpened">
                                                    <Storyboard>
                                                        <DoubleAnimation Storyboard.TargetName="PopupBorder" Storyboard.TargetProperty="Opacity" To="1.0" />
                                                    </Storyboard>
                                                </VisualState>
                                                <VisualState x:Name="PopupClosed">
                                                    <Storyboard>
                                                        <DoubleAnimation Storyboard.TargetName="PopupBorder" Storyboard.TargetProperty="Opacity" To="0.0" />
                                                    </Storyboard>
                                                </VisualState>
                                            </VisualStateGroup>
                                        </VisualStateManager.VisualStateGroups>
                                    </Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                    </Style>
                </controls:AutoCompleteBox.Style>
            </controls:AutoCompleteBox>
هل كانت مفيدة؟

المحلول

طريقة واحدة تمكنت من العثور على كيفية معالجة التصميم من خلال التعليمات البرمجية ما يلي.

امشي الشجرة البصرية والحصول على AutoColleteBox، يلقي ذلك في مربع نص، ثم اضبط الألوان (الحدود، الخلفية، إلخ)

//Cast into textbox
TextBox Temp = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(MyAutoCompleteControl, 0), 0) as TextBox;

Temp.BorderBrush = new SolidColorBrush(Colors.Red);//Change border color

أنا متأكد من وجود طريقة أفضل، ولكن يبدو أن هذا يعمل.

نصائح أخرى

إذا كنت تستخدم Silverlight 3 (حيث يمكن تعيين الأساليب عدة مرات)، فمن الأسهل: يمكنك فعلا ضبط TextBoxStyle (على MSDN هنا).

يمكنك بعد ذلك إنشاء نمط جديد في الكود - خلف (ألم)، أو ربما تغيير / تطبيق آخر من أنماطك المحددة مسبقا في التعليمات البرمجية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top