ListView
はObservableCollection<MenuTrayItem>
で埋められています。私のリソースでは、そのクラスのためにDataTemplate
を定義しました。私はListViewItem
コントロールでトリガーをキャッチし、私のDataTemplate
のBorder
コントロールのバックグラウンドを変更したいと思います。私は取得していますWPF DataTrigger変更コントロール
エラーが
/Views/MenuTrayItemView.xaml GlobalResources.xaml<DataTemplate x:Key="MenuTrayItem_Template" DataType="{x:Type model:MenuTrayItem}">
<view:MenuTrayItemView Margin="5,0,5,0" />
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListViewItem}},Path=IsSelected}" Value="True">
<!-- i am trying to change the background on the control "Container"
in the <view:MenuTrayitemView /> -->
<Setter TargetName="Container" Property="Border.Background" Value="Red" />
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
{"Child with Name 'Container' not found in VisualTree."}
です
<UserControl x:Class="CellestusInvoicing.Views.MenuTrayItemView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d"> <UserControl.Resources> <ResourceDictionary Source="/Resources/GlobalResources.xaml" /> </UserControl.Resources> <Border x:Name="Container" Width="64" Height="48" CornerRadius="5" Background="{StaticResource Gradient_Grey}" Cursor="Hand" MouseEnter="Container_MouseEnter" MouseLeave="Container_MouseLeave"> <StackPanel HorizontalAlignment="Stretch" VerticalAlignment="Stretch"> <Image Margin="0,3,0,0" Width="60" Height="30" Source="{Binding Image, FallbackValue='/Images/Icons/MenuTray_Home.png'}" /> <TextBlock Margin="3,0,0,0" Text="{Binding Title, FallbackValue='title'}" FontSize="10" Foreground="White" /> </StackPanel> </Border> </UserControl>
私はそれが範囲外であると理解しましたが、私はそれに到達する方法を知らなかった。あなたは私の体のあなたがDataContextを考慮に入れてUserControlを変更することを意味するものの例を教えていただけますか?私は考えていません... –
実際には、あなたはすでにDataContextを使用して、DataTriggerのバインディングはそれを必要としません、私はちょうどあなたの境界線をListViewItemへのRelativeSourceバインディングを介して外に見えるようにするか、内部的に使用され、(UserControl自体が有効なので)外部から設定されるusercontrolの新しいプロパティを作成します。 –
オハイオイなぜ私はそれを考えなかったのですか? :Pありがとう! –