2

プログラムで日付ピッカー用のカスタム テンプレートを作成しようとしています。私は基本的にこのテンプレート行を行に使用しています(色やものを変更しています):

http://msdn.microsoft.com/en-us/library/cc278067(v=vs.95).aspx

私はそれを調べて、この白いボックス(日付ピッカーテキストボックスの内側にあるもの)を取り除こうとしましたが、それは私を回避しています. ここに私が見ているもののスクリーンショットがあります:

ここに画像の説明を入力

余分なものを追加する必要がありますか? または、いくつかの既存の値を変更しますか? それが役立つ場合は、青いウィンドウグラデーションでホワイトボックスを強調表示するMouseOverイベントもあります..

この問題を抱えている将来の人々のために、私はブライアンが提案したことを行いました。他の人が使用できるように、コードを正確に投稿すると思っただけです;)これを app.xaml に追加しました

<Style x:Key="{x:Type DatePickerTextBox}" TargetType="{x:Type DatePickerTextBox}">        
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DatePickerTextBox}">

                <Grid>
                    <Border x:Name="watermark_decorator" BorderBrush="{DynamicResource cControlColor}" BorderThickness="1" 
                                Background="{DynamicResource cControlColor}"/>     
                </Grid>
            </ControlTemplate>
         </Setter.Value>
    </Setter>
</Style>
4

1 に答える 1

3

編集:説明が「ここにテキストを入力してください」の周りの白い長方形を指しているので更新します。

このためには、DatePickerTextBoxそのテンプレートの約3分の2で定義され、TextBoxという名前のカスタムテンプレートを作成する必要があります。最善の策は、Blendを使用してカスタムテンプレートを作成し(デフォルトのテンプレートが生成されるため)、を変更して<Border x:Name="watermark_decorator".../>を変更することBorderBrushです。例えば:

<Style x:Key="MyDatePickerTextBoxStyle" TargetType="{x:Type DatePickerTextBox}">
    <Setter Property="Template">
       <Setter.Value>
         <ControlTemplate TargetType="{x:Type DatePickerTextBox}">
           <Grid>                 
           <!-- Visual State Manager stuff -->
             <Border...>
               <!-- other stuff... -->
               <Border x:Name="watermark_decorator" BorderBrush="[THE BRUSH YOU WANT]" BorderThickness="1">
                 <!-- And so on and so forth... -->
               </Border>
             </Border>
           </Grid>
         </ControlTemplate>
    </Setter>
</Style>

次に、DatePickerテンプレートで、次のスタイルを使用するようにDatePickerTextBoxを変更します。

<!-- All DatePicker Template stuff -->
<controlsPrimitives:DatePickerTextBox x:Name="TextBox" Style="{DynamicResource MyDatePickerTextBoxStyle}" ... />

15が付いたボタンについて話しているのですか?その場合、のこの部分のルックアンドフィールはDatePicker、テンプレートの「DropDownButtonTemplate」部分で定義されます。このテンプレートには大きなVisualStateManagerセクションが含まれていますが、そのボタンのテンプレートを定義しています。ボタンテンプレートの開始と終了を定義するコメントがあります。

<!--Start UI-->
... this is the Button Template ...
<!-- End UI-->

たとえば、ボタンの上部にある青い長方形の色を変更する場合、MSDNの例では次のように使用します。

<Rectangle Grid.ColumnSpan="4" Grid.RowSpan="1" StrokeThickness="1">
  <Rectangle.Stroke>
    <LinearGradientBrush EndPoint="0.48,-1" StartPoint="0.48,1.25">
       <GradientStop Color="#FF494949" />
       <GradientStop Color="#FF9F9F9F" Offset="1" />
    </LinearGradientBrush>
  </Rectangle.Stroke>
  <Rectangle.Fill>
    <LinearGradientBrush EndPoint="0.3,-1.1" StartPoint="0.46,1.6">
      <GradientStop Color="#FF4084BD" />
      <GradientStop Color="#FFAFCFEA" Offset="1" />
    </LinearGradientBrush>
  </Rectangle.Fill>
</Rectangle>

そして、これに変更するだけで、単色に変更できます。

<Rectangle Grid.ColumnSpan="4" Grid.RowSpan="1" StrokeThickness="1" Stroke="Black" Fill="Green"/>

「ホワイトボックス」は実際にBorderはテンプレートの内側にありx:Name="BackgroundGradient"ます。そのため、その要素の背景を変更すると、白を取り除くことができます。

于 2012-08-02T18:08:50.760 に答える