2

3 つの xaml ファイルがあります。

  1. Button.xaml (ボタン スタイル)
  2. Default.xaml (テーマ ファイル) (ボタンの Merges リソース ファイルを含む)
  3. MainWindo.xaml (default.xaml リソース ディクショナリを使用)。

ボタン.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<ControlTemplate x:Key="ButtonControlTemplate" TargetType="Button">
    <Border Name="Back" >
        <Border.Background>
            <ImageBrush ImageSource="..\Images\ButtonBackground.png" />
        </Border.Background>
        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" />
    </Border>
    <ControlTemplate.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter TargetName="Back" Property="Effect">
                <Setter.Value>
                    <DropShadowEffect ShadowDepth="0" Direction="0"               
                                             BlurRadius="15"Color="#D3F80A" Opacity="1"/>
                </Setter.Value>
            </Setter>
        </Trigger>
    </ControlTemplate.Triggers>
</ControlTemplate>

<Style TargetType="{x:Type Button}">
    <Setter Property="Template" Value="{StaticResource ButtonControlTemplate}" />
</Style>

 </ResourceDictionary>

デフォルト.xaml:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns:primatives="clr-namespace:System.Windows.Controls;assembly=PresentationFramework">

    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="Controls\Button.xaml"></ResourceDictionary>
    </ResourceDictionary.MergedDictionaries>

</ResourceDictionary>

MainWindow.xaml:

<Window x:Class="RemoteDesktop.GUI.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="375" Width="195" WindowStyle="None" Topmost="True" AllowsTransparency="True" Background="Transparent" WindowStartupLocation="CenterScreen" ResizeMode="NoResize" 
        TextOptions.TextFormattingMode="Ideal"
        >
    <Window.Resources>

        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source=".\Themes\Default\Default.xaml" />
            </ResourceDictionary.MergedDictionaries>


        </ResourceDictionary>


    </Window.Resources>

    <Border x:Name="border" Margin="10" CornerRadius="10,10,10,10" BorderBrush="#111111" BorderThickness="0">
        <Border.Background>
            <ImageBrush ImageSource=".\Resources\Background.png" Stretch="Fill" />
        </Border.Background>
        <Border.Effect>
            <DropShadowEffect ShadowDepth="0" Direction="0" BlurRadius="15" Color="Black" Opacity="1"/>
        </Border.Effect>
        <Grid  >
            <Grid.ColumnDefinitions>
                <ColumnDefinition ></ColumnDefinition>
                <ColumnDefinition Width="58" ></ColumnDefinition>
                <ColumnDefinition Width="10" ></ColumnDefinition>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="33" />
                <RowDefinition Height="15"/>
                <RowDefinition Height="33" />
                <RowDefinition Height="15"/>
                <RowDefinition Height="33"/>
                <RowDefinition Height="23"/>
                <RowDefinition Height="33"/>
            </Grid.RowDefinitions>
            <Border Background="Transparent" Name="titleBorder" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="3" MouseLeftButtonDown="titleBorder_MouseLeftButtonDown">
                <Label Foreground="LightGray" TextOptions.TextHintingMode="Animated" FontSize="14" VerticalAlignment="Center" HorizontalAlignment="Center" >Please Log In</Label>
            </Border>
            <TextBox Grid.Row="2" Grid.Column="0" Width="148" Height="32" Grid.ColumnSpan="3" >
                Email
            </TextBox>
            <TextBox Grid.Row="4" Grid.Column="0" Width="148" Height="32" Grid.ColumnSpan="3" >
                Password
            </TextBox>
            <Button  Name="btn"  Grid.Row="6" Grid.Column="1" BorderThickness="0" Foreground="#232323" Content="Sign In" TextOptions.TextHintingMode="Animated" BorderBrush="{x:Null}" >

                <!--<Button.Style>
                    <Style TargetType="Button">

                        <Setter Property="OverridesDefaultStyle" Value="True"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type Button}">
                                    <Border Name="Back" >
                                        <Border.Background>
                                            <ImageBrush ImageSource=".\Resources\ButtonBackground.png" />
                                        </Border.Background>
                                        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" Text="{Binding Content, RelativeSource={RelativeSource TemplatedParent}}"  ></TextBlock>
                                    </Border>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsMouseOver" Value="True">
                                            <Setter TargetName="Back" Property="Effect">
                                                <Setter.Value>
                                                    <DropShadowEffect ShadowDepth="0" Direction="0" BlurRadius="15" Color="#D3F80A" Opacity="1"/>
                                                </Setter.Value>
                                            </Setter>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>

                            </Setter.Value>
                        </Setter>


                    </Style>
                </Button.Style>-->

            </Button>
        </Grid>
    </Border>
</Window>

上記のウィンドウ ボタン スタイルは設計時に適用されますが、実行時にデフォルトの状態にリセットされます。

4

1 に答える 1

0

私が見るように

rootdirectory\controls\button.xaml

rootdirectory\themes\default\default.xaml

ルートディレクトリ\mainwindow.xaml

だからここにある

default.xaml では、このようなボタン コントロールにアクセスするには、背後のディレクトリに移動する必要があります。

<ResourceDictionary Source="..\..\Controls\Button.xaml"></ResourceDictionary>
于 2013-04-06T18:12:48.587 に答える