Xaml在WPF中的最佳实践 [英] Xaml best practice in WPF

查看:114
本文介绍了Xaml在WPF中的最佳实践的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是wpf的最佳做法



is this a best practice in wpf

<TabControl x:Name="tabMain"
                            BorderThickness="1"
                            Grid.Row="0"
                            Grid.RowSpan="2"    
                            IsSynchronizedWithCurrentItem="True"
                            Margin="0"
                            Padding="0"
                            
                            Background="#FFFFFF"
                            
                            >
            <TabControl.Resources>
                <Style x:Key="tabcontrol"
                               TargetType="local:cTabitem">
                    <!--<Setter Property="FontFamily"
                                    Value="{StaticResource SegoSemiboldFont}" />-->
                    <Setter Property="FontSize"
                                    Value="15" />
                    <Setter Property="Margin"
                                    Value="1 -4  0 0" />
                    <Setter Property="Padding"
                                    Value="0" />
                    <Setter Property="Cursor"
                                    Value="Hand" />
                    
                    <Setter Property="Width"
                                    Value="{Binding}" />
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate TargetType="local:cTabitem">
                                <Border x:Name="Border"
                                                BorderThickness="1"
                                                
                                                Height="65"
                                                Background="#ECECEC">
                                    
                                    <Grid>
                                        <StackPanel Orientation="Vertical"
                                                            HorizontalAlignment="Center"
                                                            VerticalAlignment="Top"
                                                            x:Name="stack" >
                                            <Image x:Name="img"
                                                           Source="{Binding SelectedImage, RelativeSource={RelativeSource TemplatedParent}}"
                                                           RenderOptions.BitmapScalingMode="HighQuality"
                                                           RenderOptions.EdgeMode="Aliased"
                                                           SnapsToDevicePixels="True"
                                                           VerticalAlignment="Top"
                                                           Stretch="None" ></Image>
                                            <!--<StackPanel.ToolTip>
                                                <ContentPresenter x:Name="ContentSites"
                                                                          Margin="5,0"
                                                                          VerticalAlignment="Center"
                                                                          HorizontalAlignment="Center"
                                                                          ContentSource="Header">
                                                </ContentPresenter>
                                            </StackPanel.ToolTip>-->
                                            <Label x:Name="lbl_headText" Foreground="Black" FontSize="11" Width="{TemplateBinding Width}" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" Padding="0 5" HorizontalContentAlignment="Center" FontWeight="Bold" >
                                                <ContentPresenter x:Name="lbl_ContentSites"
                                                                          Margin="0 0 0 12"
                                                                          VerticalAlignment="Center"
                                                                          HorizontalAlignment="Center"
                                                                          ContentSource="Header">
                                                </ContentPresenter>
                                            </Label>
                                        </StackPanel>
                                        
                                    </Grid>
                                </Border>
                                <ControlTemplate.Triggers>
                                    <!--<Trigger Property="IsSelected"
                                                     Value="True">
                                        <Setter TargetName="Border"
                                                        Property="Background"
                                                        Value="#ECECEC" />
                                        
                                        <Setter TargetName="lbl_headText"
                                                        Property="Foreground"
                                                        Value="Black" />
                                        --><!--<Setter TargetName="Border"
                                                        Property="BorderBrush"
                                                        Value="{x:Static local:cImageResources.clLinks}" />-->
                                        <!--<Setter TargetName="Border"
                                                        Property="BorderThickness"
                                                        Value="0,1,0,0" />--><!--
                                        <Setter TargetName="img"
                                                        Property="Source"
                                                        Value="{Binding SelectedImage, RelativeSource={RelativeSource TemplatedParent}}" />
                                    </Trigger>
                                    <Trigger Property="IsSelected"
                                                     Value="False">
                                        <Setter TargetName="Border"
                                                        Property="Background"
                                                        Value="#141414" />
                                        <Setter TargetName="lbl_headText"
                                                        Property="Foreground"
                                                        Value="#A6A6A6" />
                                        <Setter TargetName="img"
                                                        Property="Source"
                                                        Value="{Binding NormalImage, RelativeSource={RelativeSource TemplatedParent}}" />
                                    </Trigger>
                                    <Trigger Property="IsMouseOver"
                                                     Value="True">
                                        <Setter TargetName="Border"
                                                        Property="Background"
                                                        Value="#141414" />
                                        <Setter TargetName="lbl_headText"
                                                        Property="Foreground"
                                                        Value="White" />
                                        <Setter TargetName="img"
                                                        Property="Source"
                                                        Value="{Binding SelectedImage, RelativeSource={RelativeSource TemplatedParent}}" />
                                    </Trigger>-->

                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition  Property="IsMouseOver"
                                                                Value="True" />
                                            <Condition Property="IsTabStop"
                                                               Value="True" />
                                            <Condition Property="IsSelected" Value="true"/>
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="Border"
                                                        Property="Background"
                                                        Value="#F1F1F1" />
                                        <Setter TargetName="img"
                                                        Property="Source"
                                                        Value="{Binding SelectedImage, RelativeSource={RelativeSource TemplatedParent}}" />
                                        <Setter TargetName="lbl_headText"
                                                        Property="Foreground"
                                                        Value="Black" />
                                    </MultiTrigger>

                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition  Property="IsMouseOver"
                                                                Value="True" />
                                            
                                            <Condition Property="IsSelected" Value="false"/>
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="Border"
                                                        Property="Background"
                                                        Value="#F1F1F1" />
                                        <Setter TargetName="img"
                                                        Property="Source"
                                                        Value="{Binding HoverImage, RelativeSource={RelativeSource TemplatedParent}}" />
                                        <Setter TargetName="lbl_headText"
                                                        Property="Foreground"
                                                        Value="White" />
                                        <Setter TargetName="lbl_headText"
                                                        Property="Background"
                                                        Value="#000000" />
                                        <Setter TargetName="Border" Property="Background" Value="#414040"/>
                                    </MultiTrigger>

                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition  Property="IsMouseOver"
                                                                Value="false" />

                                            <Condition Property="IsSelected" Value="false"/>
                                        </MultiTrigger.Conditions>
                                        <Setter TargetName="Border"
                                                        Property="Background"
                                                        Value="#F1F1F1" />
                                        <Setter TargetName="img"
                                                        Property="Source"
                                                        Value="{Binding NormalImage, RelativeSource={RelativeSource TemplatedParent}}" />
                                        <Setter TargetName="lbl_headText"
                                                        Property="Foreground"
                                                        Value="White" />
                                        <Setter TargetName="lbl_headText"
                                                        Property="Background"
                                                        Value="#000000" />
                                        <Setter TargetName="Border" Property="Background" Value="#343434"/>
                                    </MultiTrigger>


                                </ControlTemplate.Triggers>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                    
                </Style>

                <Style TargetType="{x:Type TabPanel}">
                    <Setter Property="HorizontalAlignment" Value="Center" />
                </Style>
            </TabControl.Resources>
            <local:cTabitem Header="Status"
                                   Width="102" 
                                    
                                    Style="{StaticResource tabcontrol}"
                                    x:Name="tboverview"                                      
                                    NormalImage="/Wpftabtest;component/Resources/Home1.png"
                                    SelectedImage="/Wpftabtest;component/Resources/Home2.png"
                                    HoverImage ="/Wpftabtest;component/Resources/Home3.png">
                
            </local:cTabitem>

            <local:cTabitem Style="{StaticResource tabcontrol}"
                                   Width="102" 
                                    Header="Driver Scan"
                                    x:Name="tbScan"
                                    NormalImage="/Wpftabtest;component/Resources/DriverScan1.png"
                                    SelectedImage="/Wpftabtest;component/Resources/DriverScan2.png"
                                    HoverImage ="/Wpftabtest;component/Resources/DriverScan3.png">
                
            </local:cTabitem>

            <local:cTabitem x:Name="tbWebProtection"
                                   Width="102" 
                                    Style="{StaticResource tabcontrol}"
                                    Header="Backup"
                                    NormalImage="/Wpftabtest;component/Resources/Backup1.png"
                                    SelectedImage="/Wpftabtest;component/Resources/Backup2.png"
                                    HoverImage ="/Wpftabtest;component/Resources/Backup3.png">
                
            </local:cTabitem>

            <local:cTabitem x:Name="tbStartupManager"
                                    Width="102" 
                                    Style="{StaticResource tabcontrol}"
                                    Header="Restore"
                                    NormalImage="/Wpftabtest;component/Resources/Restore1.png"
                                    SelectedImage="/Wpftabtest;component/Resources/Restore2.png"
                                    HoverImage ="/Wpftabtest;component/Resources/Restore3.png">
                
            </local:cTabitem>
            <local:cTabitem x:Name="tbActionCenter"
                                   Width="102" 
                                    Style="{StaticResource tabcontrol}"
                                    Header="Settings"
                                    NormalImage="/Wpftabtest;component/Resources/Settings1.png"
                                    SelectedImage="/Wpftabtest;component/Resources/Settings2.png"
                                    HoverImage ="/Wpftabtest;component/Resources/Settings3.png">
                
            </local:cTabitem>
            <local:cTabitem x:Name="tbRegistration"
                                    Width="102" 
                                    Style="{StaticResource tabcontrol}"
                                    Header="Register Now"
                                    NormalImage="/Wpftabtest;component/Resources/register1.png"
                                    SelectedImage="/Wpftabtest;component/Resources/register2.png"
                                    HoverImage ="/Wpftabtest;component/Resources/register3.png">
                
            </local:cTabitem>

           

            <!--<local:cTabitem Style="{StaticResource tabcontrol}"
                                    Header=""
                                    x:Name="tabExtra"
                                    Width="0"
                                    Cursor="Arrow"
                                    IsTabStop="False">
                
            </local:cTabitem>-->

        </TabControl>





我的尝试:





What I have tried:

TabControl x:Name="tabMain"
                            BorderThickness="1"
                            Grid.Row="0"
                            Grid.RowSpan="2"    
                            IsSynchronizedWithCurrentItem="True"
                            Margin="0"
                            Padding="0"
                            
                            Background="#FFFFFF"
                            
                            >

推荐答案

倾弃代码丢弃问题
引用:

这是wpf的最佳实践

不是一个好问题。它太含糊了,我们无法回答它。目前尚不清楚你所指的是什么练习 - 它可以是任何来自

- 你的命名约定(对我来说没问题,至少你没有使用默认名称)

- 在源代码文件中使用缩进(通常的做法)

- 通过使用数据绑定(是的,这是一种很好的做法)



您可以通过一些研究找到更多关于最佳实践的信息 - 尝试 Google [ ^ ]或阅读实用程序员等书籍 [ ^ ]或完成代码 [ ^ ](还有其他人)

is not a good question. It is so vague we cannot possibly answer it. It is not clear what "practice" you are referring to - it could be anything from
- your naming conventions (looks ok to me, at least you haven't used default names)
- to the use of indentation in the source code file (common practice)
- through to the use of data binding (yes, this is good practice)

You can find out more about "best practices" with a little research - try Google[^] or by reading books like The Pragmatic Programmer[^] or Code Complete[^] (there are others)


这篇关于Xaml在WPF中的最佳实践的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆