2017-04-06 11 views
0

PlaceholderTextプロパティTextBoxを使用しているListBoxで作業しています。ここに私のコードはListBoxです。私は<TextBox PlaceholderText="Other"/>「その他」などBlueに表示されるように、ここで入力されたテキストの前景色を変更したいリストボックス内のプレースホルダーテキストをカスタマイズしてUWPの特定の色にする方法

<Popup x:Name="ReasonCodePopUp" x:FieldModifier="Public" IsOpen="{Binding ShowFuelChangeReasonPopUp, Mode=TwoWay}" 
           Height="420" Width="1100" Grid.Row="0" Grid.RowSpan="2" IsLightDismissEnabled="True"> 
          <Grid Height="397" Width="1100" > 
           <TextBlock Visibility="Collapsed" Name="txtFuelReason" Text="{x:Bind ViewModel.FuelPlanInfo.ExtraFuelReason,Mode=TwoWay}"/> 
           <ListBox Margin="20" Name="lstFuelReason" SelectionChanged="lstFuelReason_SelectionChanged" 
            Background="#414042" Height="420" Width="1100" > 
            <ListBox.ItemContainerStyle> 

             <Style TargetType="ListBoxItem"> 
              <Setter Property="Background" Value="Transparent"/> 
              <Setter Property="Margin" Value="0"/> 
              <Setter Property="Padding" Value="0"/> 
              <Setter Property="Height" Value="40"/> 
              <Setter Property="Padding" Value="0"/> 

             </Style> 

            </ListBox.ItemContainerStyle> 
            <ListBoxItem IsEnabled="False" Margin="43.5,30.5,748.5,0"> 
             <TextBlock Text="Reason Code" FontSize="32" FontFamily="Helvetica" FontWeight="Bold" Foreground="#ffffff" IsHitTestVisible="False" /> 
            </ListBoxItem> 
            <ListBoxItem IsEnabled="False"> 
             <Border Margin="43,0,57,0" BorderBrush="#979797" BorderThickness="0,0,0,1" Width="948"/> 
            </ListBoxItem> 
            <ListBoxItem> 
             <TextBlock Text="ATC" Margin="43,0,57,0" Foreground="#FFFFFF" FontSize="32" FontFamily="{ThemeResource Bold}" FontWeight="Normal" SelectionHighlightColor="Blue"></TextBlock> 
            </ListBoxItem> 
            <ListBoxItem IsEnabled="False"> 
             <Border Margin="43,0,57,0" BorderBrush="#979797" BorderThickness="0,0,0,1" Width="948"/> 
            </ListBoxItem> 
            <ListBoxItem> 
             <TextBlock Text="Weather" Margin="43,0,57,0" Foreground="#FFFFFF" FontSize="32" FontFamily="{ThemeResource Bold}" FontWeight="Normal"></TextBlock> 
            </ListBoxItem> 
            <ListBoxItem IsEnabled="False" Margin="0"> 
             <Border Margin="43,0,57,0" BorderBrush="#979797" BorderThickness="0,0,0,1" Width="948"/> 
            </ListBoxItem> 
            <ListBoxItem Height="50"> 
             <TextBox PlaceholderText="Other" Margin="43.5,0,0,0" Tapped="FuelReasonOther_Tapped" TextChanged="TextBox_TextChanged" Foreground="#FF0078D7" FontSize="32" FontFamily="{ThemeResource Bold}" FontWeight="Normal" Style="{StaticResource TransparentTextBox}"/> 

            </ListBoxItem> 
           </ListBox> 
          </Grid> 
         </Popup> 

コンテンツを実装するためにPopUpを使用しています。 私はContentTemplateでプレーする必要があることを知っていますが、そうすることはできません。 誰かを助けることができますか?

+0

[TextBox](https://msdn.microsoft.com/en-us/library/windows/apps/mt299154.aspx)の既定のテンプレートがインジケータの場合、プレースホルダの 'ContentControl'が' {ThemeResource SystemControlPageTextBaseMediumBrush} 'を実行して、' Brush'をオーバーライドしたり、直接テンプレートを編集したりできます。編集中は –

+0

です。私のテキストボックスでさえスタイルにバインドされている、私はそれを上回ることはできません。コードを変更する手助けはできますか? – Apoorv

+0

すでにテキストボックス用のカスタムスタイルテンプレートがありますか?もしそうなら、コードを投稿してください。プレースホルダーの '' Foreground''を変更するには、 'x:Name =" PlaceholderTextContentPresenter "が表示されます。 –

答えて

0

TextControlで定義されたブラシをオーバーライドすると、TextBoxコントロール全体をテーマにすることなく、必要な色に変更できます。私は、次のコードでそれをテストし、それが働いた:

<TextBox PlaceholderText="Other" Margin="43.5,0,0,0" FontSize="32" FontWeight="Normal"> 
    <TextBox.Resources> 
     <SolidColorBrush x:Key="TextControlPlaceholderForeground" Color="LightBlue"/> 
     <SolidColorBrush x:Key="TextControlPlaceholderForegroundFocused" Color="LightBlue" /> 
     <SolidColorBrush x:Key="TextControlPlaceholderForegroundPointerOver" Color="LightBlue" /> 
     <SolidColorBrush x:Key="TextControlForeground" Color="Blue" /> 
     <SolidColorBrush x:Key="TextControlForegroundFocused" Color="Blue" /> 
     <SolidColorBrush x:Key="TextControlForegroundPointerOver" Color="Blue" /> 
    </TextBox.Resources> 
</TextBox> 

注:私はちょうどUI要素を維持するためにあなたのバインディングおよびイベントハンドラを削除しました。しかし、あなたはあなたのTextBoxにTextBox.Resourcesを追加し、それが動作するのを見ることができるはずです。

TextBox.Resourcesは、TextBox内にあるTextControlのデフォルトのブラシをオーバーライドします。これらのブラシ名は、特定の状況で描画するためにコントロールによって使用されます。

これがトリックであるかどうかを教えてください。

関連する問題