0
바인딩을 기반으로 파란색으로 선택된 항목을 표시하도록 listview를 설정하려고하지만 데이터 트리거가 실행되지 않습니다. 트리거 값을 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 Sub NotifyPropertyChanged(<CallerMemberName()> Optional ByVal propertyName As String = Nothing)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
Private _rowselected As Integer
Public Property rowselected() As Integer
Get
Return _rowselected
End Get
Set(ByVal value As Integer)
If Not(value = _rowselected) Then
_rowselected = value
NotifyPropertyChanged()
End If
End Set
End Property
End Class
가 rowselected 클래스를합니까 정의 : 여기에 인터페이스가 제대로
– mm8아, 인터페이스를 구현하지 않았습니다. 나는 지금이지만, 아직 발사하지 않고있다. 클래스를 표시 할 게시물을 편집했습니다. – MWFBrad
속성 설정자의 이벤트를 제기하지 않았습니다. – mm8