0
バインディングに基づいて選択したアイテムを青色で表示するようにリストビューを設定しようとしていますが、データトリガーは起動しません。トリガー値を0(初期値)に設定すると、listviewitemsは青色の背景で作成されますが、その後は変更されません。Wpf DataTriggerがプロパティの変更で起動しない
VBコード:
Private Sub SetGridViewDynamically()
Dim myGridView As New GridView
myGridView.AllowsColumnReorder = True
Dim gvc1 As New GridViewColumn
gvc1.DisplayMemberBinding = New Binding("A")
gvc1.Header = "1"
gvc1.Width = TestListView.ActualWidth * 0.19
myGridView.Columns.Add(gvc1)
Dim gvc2 As New GridViewColumn
gvc2.DisplayMemberBinding = New Binding("B")
gvc2.Header = "2"
gvc2.Width = TestListView.ActualWidth * 0.39
myGridView.Columns.Add(gvc2)
Dim gvc3 As New GridViewColumn()
gvc3.DisplayMemberBinding = New Binding("C")
gvc3.Header = "3"
gvc3.Width = TestListView.ActualWidth * 0.19
myGridView.Columns.Add(gvc3)
Dim gvc4 As New GridViewColumn()
gvc4.DisplayMemberBinding = New Binding("D")
gvc4.Header = "4"
gvc4.Width = TestListView.ActualWidth * 0.19
myGridView.Columns.Add(gvc4)
TestListView.View = myGridView
Dim style As New Style
style.TargetType = GetType(ListViewItem)
style.Setters.Add(New Setter(ListViewItem.HorizontalContentAlignmentProperty, HorizontalAlignment.Center))
Dim x = New DataTrigger
x.Binding = New Binding("rowselected")
x.Value = 0
x.Setters.Add(New Setter(TestListView.BackgroundProperty, DarkGradientSample.Background))
Dim x2 = New Trigger
x2.Property = ItemsControl.AlternationIndexProperty
x2.Value = 1
x2.Setters.Add(New Setter(TestListView.BackgroundProperty, LightGradientSample.Background))
Dim x3 As New DataTrigger
x3.Binding = New Binding("rowselected")
x3.Value = 1
x3.Setters.Add(New Setter(TestListView.BackgroundProperty, BlueGradientSample.Background))
style.Triggers.Add(x)
style.Triggers.Add(x2)
style.Triggers.Add(x3)
TestListView.ItemContainerStyle = style
End Sub
、問題のリストビューのためのXAML:
<ListView x:Name="TestListView" Grid.Column="1" Margin="10" Grid.Row="2" ItemsSource="{Binding picks}" FontSize="48" AlternationCount="2" Foreground="White" HorizontalContentAlignment="Stretch">
</ListView>
編集:手に入れました。私はInotifypropertychangedを正しく実装していませんでした。ここではクラスで適切に実装インタフェース
Public Class PickLocation
Implements INotifyPropertyChanged
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Private _rowselected As Integer
Public Property rowselected As Integer
Get
Return _rowselected
End Get
Set(value As Integer)
_rowselected = value
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs("rowselected"))
End Set
End Property
はrowselectedが定義されているクラスをいINotifyPropertyChangedを実装しますか? – mm8
ああ、インタフェースを実装していませんでした。私は今ですが、私はまだそれを発射していません。 投稿を編集してクラスを表示しました – MWFBrad
あなたはそのプロパティの設定者でイベントを起こしていません。 – mm8