如何更改列表視圖中項目的前景(即使背景將執行)。 我有一個程序打開Excel並檢查給定工作表中的損壞鏈接。 我想向用戶顯示給定鏈接的列表,而且這個列表已被破壞。我想改變前景到紅色。 我已將值綁定到observablecollection。收藏是一個字符串(Web鏈接)只是收集和工作正常WPF:更改列表視圖項的背景顏色
應該怎麼做多結合樣here
編輯: - 這個 多救一個問題。創建財產並進行所有更改後。 WPF表單沒有得到值的更新。即列表框未被填充。沒有着色發生(不確定它也發生了,因爲我不能看到它們)。
這是我的代碼。請原諒我的編碼我是新來WPF
<Window x:Class="URLValide.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:Local="clr-namespace:URL_Validater.URLValide"
Title="URL Validator" Height="269" Width="525" FontSize="13"
ResizeMode="NoResize">
<Window.Resources>
<ResourceDictionary>
<Style x:Key="HighLight" TargetType="{x:Type Control}">
<Setter Property="Background" Value="Honeydew"/>
<Setter Property="FontWeight" Value="UltraBlack"/>
<Style.Triggers>
<Trigger Property="IsFocused" Value="True">
<Setter Property="Effect">
<Setter.Value>
<DropShadowEffect BlurRadius="40" Color="Beige" Direction="50" Opacity="0.5"/>
</Setter.Value>
</Setter>
<Setter Property="Background" Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
</ResourceDictionary>
</Window.Resources>
<DockPanel LastChildFill="True">
<Label DockPanel.Dock="Top" Name="WinHeader" Height="30" Background="BurlyWood" FontFamily="Calibri" FontSize="20" FontWeight="Bold" FontStretch="Medium" VerticalAlignment="Top" HorizontalAlignment="Stretch" Margin="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Top">URL Validator</Label>
<Grid DockPanel.Dock="Bottom" Background="Beige">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="20" MaxHeight="30"/>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Text="Current URL:"></TextBlock>
<TextBlock Grid.Column="1" Text="{Binding strCrnUrl}" Width="370"></TextBlock>
<TextBlock Grid.Column="2" Text="10 of 100" HorizontalAlignment="Left" VerticalAlignment="Center"></TextBlock>
</Grid>
<Grid DockPanel.Dock="Right" Width="154">
<Grid.ColumnDefinitions>
<ColumnDefinition MaxWidth="300" Width="19*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition MaxHeight="55" MinHeight="10" Height="35*" />
<RowDefinition Height="165*" MinHeight="10" />
</Grid.RowDefinitions>
<Label Name="LbleRight" BorderBrush="Black" BorderThickness="1" Margin="0,2" FontSize="13" Content="List Of URL's" Height="30" Grid.ColumnSpan="2" Grid.Row="0"></Label>
<ListView Grid.Row="1" Background="Azure" ItemsSource="{Binding strPdfLst}" IsEnabled="True" Margin="0,0,0,1"></ListView>
</Grid>
<Grid DockPanel.Dock="Left">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="30*" />
<RowDefinition Height="60*" />
</Grid.RowDefinitions>
<Label BorderBrush="Black" Name="lblFleSel" BorderThickness="1" Height="27" Margin="2,2,0,30" HorizontalAlignment="Left" Width="349">Select File To which Contains the list of URL's:</Label>
<TextBox Name="txtbxFleNme" BorderBrush="Black" BorderThickness="1" Margin="2,34,0,0" Style="{StaticResource ResourceKey=HighLight}" HorizontalAlignment="Left" Width="272"></TextBox>
<Button Name="btnFleSlec" Width="69" Height="27" Content="Browse" HorizontalAlignment="Center" VerticalAlignment="Center" Margin="276,32,4,0"></Button>
<Grid Grid.Row="1" Height="118" HorizontalAlignment="Left" Margin="0,1,0,0" Name="OptionGrid" VerticalAlignment="Top" Grid.RowSpan="2">
<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Orientation="Horizontal">
<Border BorderBrush="Black" BorderThickness="1" Height="117" Margin="3,1,0,0" HorizontalAlignment="Stretch" Width="350">
<!--<StackPanel HorizontalAlignment="Left" VerticalAlignment="Top" Width="162" Height="118">
</StackPanel>-->
<Grid Height="auto" HorizontalAlignment="Stretch" Width="335">
<Grid.RowDefinitions>
<RowDefinition Height="10*"/>
<RowDefinition Height="10*"/>
<RowDefinition Height="10*"/>
<RowDefinition Height="10*"/>
<RowDefinition Height="10*"/>
</Grid.RowDefinitions>
<CheckBox Name="chkboxHas" VerticalAlignment="Center" HorizontalAlignment="Center">Has Column Headers</CheckBox>
<Label Name="lblDesc" Height="auto" Margin="0,0,204,0" Grid.Row="1" HorizontalContentAlignment="Right" VerticalAlignment="Top">Description Column:</Label>
<ComboBox Grid.Row="1" Name="cmboxDescol" Margin="131,0,0,0" Style="{StaticResource ResourceKey=HighLight}"></ComboBox>
<Label Name="lblUrlCol" Height="auto" Grid.Row="2" Margin="0,0,204,0" HorizontalContentAlignment="Right">URL's Column:</Label>
<ComboBox Name="cmboxUrlCol" Grid.Row="2" Margin="131,0,0,0" Style="{StaticResource ResourceKey=HighLight}"></ComboBox>
<Label Name="lblResCol" Height="auto" Grid.Row="3" Margin="0,0,196,0" HorizontalContentAlignment="Right">Result Column:</Label>
<ComboBox Name="cmboxResCol" Grid.Row="3" Margin="131,0,0,0" Style="{StaticResource ResourceKey=HighLight}"></ComboBox>
<Button Grid.Row="4" HorizontalAlignment="Center" VerticalAlignment="Center" Content="Validate URL links" Name="btnValidate"></Button>
</Grid>
</Border>
</StackPanel>
</Grid>
</Grid>
</DockPanel>
我不知道我是否應該發佈完整的代碼。但這裏是我的班級 按鈕點擊將啓動程序。
我的類代碼: -
Imports Microsoft
Imports System
Imports System.Net
Imports System.Data
Imports System.Windows
Imports System.Windows.Forms
Imports Excel = Microsoft.Office.Interop.Excel
Imports System.Collections.ObjectModel
Imports System.ComponentModel
Namespace URLValide
Public Class clsUrlCheck
Implements INotifyPropertyChanged
Public Event propertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
Public exclApplic As New Excel.Application
Public exclWkbOpe As Excel.Workbook
Public exclWksAct As Excel.Worksheet
Public exclRngUrl As Excel.Range
Public exclRngDes As Excel.Range
Public exclRngOut As Excel.Range
Public intMaxRow As Long
Public intCrtRow As Long
Private _strTotlOf As String
Private _strCrnUrl As String
Private _ColorIndx As String
Private _strPdfLst As ObservableCollection(Of String)
Private _strhdrPdf As ObservableCollection(Of String)
#Region "Region of poperties"
Public Property strTotlOf() As String
Get
Return _strTotlOf
End Get
Set(ByVal value As String)
_strTotlOf = value
Me.OnPropertyChanged("strTotlOf")
End Set
End Property
Public Property strCrnUrl() As String
Get
Return _strCrnUrl
End Get
Set(ByVal value As String)
_strCrnUrl = value
Me.OnPropertyChanged("strCrnUrl")
End Set
End Property
Public Property strPdfLst As ObservableCollection(Of String)
Get
Return _strPdfLst
End Get
Set(ByVal value As ObservableCollection(Of String))
_strPdfLst = value
Me.OnPropertyChanged("strPdfLst")
End Set
End Property
Public Property strhdrPdf As ObservableCollection(Of String)
Get
Return _strhdrPdf
End Get
Set(ByVal value As ObservableCollection(Of String))
_strhdrPdf = value
Me.OnPropertyChanged("strhdrPdf")
End Set
End Property
Public Property ColorIndx As String
Get
Return _ColorIndx
End Get
Set(ByVal value As String)
_ColorIndx = value
Me.OnPropertyChanged("ColorIndx")
End Set
End Property
Private Sub OnPropertyChanged(ByVal propertyName As String)
RaiseEvent propertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
#End Region
#Region "function of Validating the URL's"
Public Function UrlCheck(ByVal strUrlReq As String)
Try
Dim WebReq As Net.HttpWebRequest = Net.HttpWebRequest.Create(strUrlReq)
WebReq.Method = "Head"
WebReq.Timeout = 5000
Using Response = WebReq.GetResponse()
Return True
End Using
Catch ex As Exception
ColorIndx = "True"
Return False
End Try
End Function
#End Region
#Region "Start Function"
Sub suStart()
Dim blnValid As Boolean
'strPdfLst.Clear()
'strPdfLst = makeList(exclRngUrl.Column, False)
If exclRngDes.Value = "Make Desc" Then
strPdfLst = makeList(exclRngUrl.Column, True)
exclRngDes.Delete()
Else
strPdfLst = makeList(exclRngUrl.Column, False)
End If
For Each exclRngEch As Excel.Range In exclRngUrl
strCrnUrl = exclRngEch.Text
strTotlOf = exclRngEch.Row & "OF" & intMaxRow
blnValid = UrlCheck(exclRngEch.Value.ToString)
If blnValid Then
exclWksAct.Cells(exclRngEch.Row, exclRngOut.Column).value = "Web Page Present"
Else
exclWksAct.Cells(exclRngEch.Row, exclRngOut.Column).value = "Web Page Error"
End If
Next
End Sub
Function makeList(ByVal intColNum As Long, ByVal blnMkeStr As Boolean) As ObservableCollection(Of String)
Dim ObsColTem As ObservableCollection(Of String) = New ObservableCollection(Of String)
If Not blnMkeStr Then
For intLopCnt As Int32 = intCrtRow To intMaxRow
ObsColTem.Add(exclWksAct.Cells(intLopCnt, intColNum).Text)
Next
Else
For intLopCnt As Int32 = intCrtRow To intMaxRow
Dim strDesc As String = Mid(exclWksAct.Cells(intLopCnt, intColNum).Text, InStrRev(exclWksAct.Cells(intLopCnt, intColNum).Text, "/", , CompareMethod.Text) + 1)
ObsColTem.Add(strDesc)
Next
End If
Return ObsColTem
End Function
#End Region
End Class
End Namespace
就是 「strPdfLst」 一個ObservableCollection或只是一個列表? –
makim
2013-03-05 10:09:05
它是ObservableCollection – 2013-03-05 10:25:44
好吧,你是否已經將DataContext設置爲包含「strPdfLst」的對象? – makim 2013-03-05 10:28:05