DataGrid/ListBox中的WPF按钮
我在将WPF项目从vs2008转换为vs2010时遇到了一个问题。 我有一个包含列表框的DataGrid。每个ListBoxItem都有一个标签和一个按钮。转换为vs2010后,该按钮不再渲染,但在应用程序进入视图时会立即崩溃。(即,应用程序加载,但在创建ListBox时,我得到了一个NullReferenceException。不过,有效的方法是从按钮中删除click事件,然后将其渲染为罚款:)ListBoxItem中带有按钮的相同类型的设置在不在DataGrid中时也有效。ListBox的内容显然是动态的,但是当使用静态集合时,我会得到相同的错误。此外,删除CommandParam也没有任何帮助。欢迎指点 代码: 末级 和应用内资源:DataGrid/ListBox中的WPF按钮,wpf,button,event-handling,Wpf,Button,Event Handling,我在将WPF项目从vs2008转换为vs2010时遇到了一个问题。 我有一个包含列表框的DataGrid。每个ListBoxItem都有一个标签和一个按钮。转换为vs2010后,该按钮不再渲染,但在应用程序进入视图时会立即崩溃。(即,应用程序加载,但在创建ListBox时,我得到了一个NullReferenceException。不过,有效的方法是从按钮中删除click事件,然后将其渲染为罚款:)ListBoxItem中带有按钮的相同类型的设置在不在DataGrid中时也有效。ListBox的内
<Style TargetType="StackPanel" x:Key="hzp">
<Setter Property="Orientation" Value="Horizontal"/>
<Setter Property="Background" Value="Orange"/>
</Style>
现在有件奇怪的事。如果移除Stackpanel样式,则按钮将起作用。如果删除按钮的单击事件,它将正常加载 您的事件处理程序似乎已从代码隐藏文件中消失,请先检查该文件。如果不是这样,请发表评论。我相信我已经找到了我自己问题的答案。在绑定到ObservableCollection的列表框中,所有样式都必须是DynamicSource。在3.5版中使用StaticResource效果很好,但在4版中没有!花了几个小时随机测试所有东西来找到这个。Case closed嗨,Drknezz,事件处理程序还可以,我已经仔细检查过了。它的签名也与列表框外的其他按钮相同,如果可能的话,发布一些复制这种行为的示例代码
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>