2017-01-28 1 views
0

テキストボックス(およびサンプルコードには表示されていない他の要素)をラッピングするBorderを持つリストビューがあります。私は、テキストボックスがそれを囲む枠線のプロパティを変更するためにキーボードにフォーカスしているときにしたい。WPF - DateTemplate内のTextBoxにフォーカスが当たっているときに、データ型の子プロパティのデータ型を変更する

<ListView ItemsSource="{Binding activeLists}"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <Border x:Name="border"> 
        <TextBox Text="something"> 
         <TextBox.Style> 
          <Style> 
           <Style.Triggers> 
            <Trigger Property="TextBox.IsFocused" Value="True"> 
             <Setter TargetName="border" Property="TextBox.Background" Value="Red"></Setter> 
            </Trigger> 
           </Style.Triggers> 
          </Style> 
         </TextBox.Style> 
        </TextBox> 
       </Border> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

トリガTargetName = "border"の内側で使用すると、アイテムが見つかりません。 可能であれば、XAMLからのみこれを実行します。

答えて

0

これを実行しようとすると、「TargetNameプロパティをスタイルセッターに設定できません」というエラーも発生しました。これは、あなたがTextBoxコントロールのスタイルセッターの中でBorderコントロールのプロパティを設定できないことを示しています(私を驚かせるものではありません)。

代わりにできることは、 DataTriggerを使用して、テキストボックスのIsFocusedプロパティにバインドします。

<Border> 
    <Border.Style> 
     <Style TargetType="Border"> 
      <Style.Triggers> 
       <DataTrigger Binding="{Binding Path=IsFocused, ElementName=textBox}" Value="true"> 
        <Setter Property="Background" Value="Red" /> 
       </DataTrigger> 
      </Style.Triggers> 
     </Style> 
    </Border.Style> 
    <TextBox Name="textBox" Text="something"/> 
</Border> 
関連する問題