WPFプロジェクトをvs2008からvs2010に変換するときに問題が発生しました。 私はListBoxを含むDataGridを持っています。各ListBoxItemにはラベルとボタンがあります。 vs2010に変換した後、ボタンはレンダリングされなくなり、表示されるとすぐにアプリケーションがクラッシュします。 (つまり、アプリケーションがロードされますが、ListBoxが作成されるとNullReferenceExceptionが発生しますが、ボタンからクリックイベントを削除してからレンダリングするのが効果的です)ListBoxItem内のButtonと同じタイプの設定は、 DataGrid。 ListBoxの内容は明らかに動的であることを意図していますが、静的なコレクションで作業する場合は同じエラーが発生します。また、CommandParamを削除しても全く役に立ちません。すべてのポインタは大歓迎です。DataGrid/ListBoxのWPFボタン
<DataGrid x:Name="DgTest" AutoGenerateColumns="false">
<DataGrid.Columns>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel>
<ListBox ItemsSource="{Binding ItemList}">
<ListBox.ItemTemplate>
<DataTemplate >
<StackPanel Style="{StaticResource hzp}">
<Label />
<Button Click="Button_Click" Content="TestButton"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
コードビハインド:
Imports System.Collections.ObjectModel
Class MainWindow
Public TestList As New ObservableCollection(Of TestClass)
Private Sub MainWindow_Loaded(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs) Handles Me.Loaded
DgTest.ItemsSource = TestList
TestList.Add(New TestClass(0))
TestList.Add(New TestClass(1))
End Sub
Public Class TestClass
Private _ItemList As New List(Of String)
Private _id As Integer
Public Property ItemList() As List(Of String)
Get
Return _ItemList
End Get
Set(ByVal value As List(Of String))
_ItemList = value
End Set
End Property
Public Property Id() As Integer
Get
Return _id
End Get
Set(ByVal value As Integer)
_id = value
End Set
End Property
Public Sub New(ByVal id As Integer)
_ItemList.Add("String1")
_id = id
End Sub
End Class
Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs)
End Sub
エンドクラス
とアプリリソースの:
コード
<Style TargetType="StackPanel" x:Key="hzp">
<Setter Property="Orientation" Value="Horizontal"/>
<Setter Property="Background" Value="Orange"/>
</Style>
は今ここに奇妙なことです。 Stackpanelスタイルが削除されている場合、ボタンは機能します。ボタンのClickイベントが削除されると、正常に読み込まれます。
こんにちはDrknezz、イベントハンドラは大丈夫です、私はダブルとトリプルチェックしました。その署名もListBoxの外にある他のボタンと同じです。 – Constanta
可能であれば、この動作を再現するサンプルコードを投稿してください –