gpt4 book ai didi

.net - MVVM 中继命令不会在 Silverlight RIA 应用程序中触发

转载 作者:行者123 更新时间:2023-12-03 10:18:23 27 4
gpt4 key购买 nike

我正在开发 Silverlight 4 RIA( Entity Framework )应用程序,但在使用 MVVMLight RelayCommand 时遇到问题。我之前使用过它们没有问题,但是在我实现 ViewModelLocator 模式之后似乎出现了问题。

按钮控件上的绑定(bind)不会产生任何问题,并且应用程序会运行,但按钮单击不会触发 RelayCommand。

当我尝试在 Blend 中绑定(bind) RelayCommand 时,它看不到 SelectionCommand 属性,但它可以看到其他属性,例如 IsBusy。

知道我做错了什么吗?




    <ListBox x:Name="ListBox" ItemsSource="{Binding Draws}" Background="Transparent">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Background="Transparent" HorizontalAlignment="Stretch" Orientation="Vertical" >
<telerik:RadButton Background="Transparent" Command="{Binding Path=SelectionCommand}" CommandParameter="{Binding Path=ID}" >
<Image Source="{Binding Path=DrawImage, Converter={StaticResource imgConverter}, TargetNullValue=/NSPCCLotteryDraw;component/Assets/Images/JCBLogo.PNG}" Stretch="UniformToFill"/>
</telerik:RadButton>
<TextBlock Text="{Binding Path=DrawName}" TextAlignment="Center" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Times New Roman" FontSize="20" Margin="5,0,0,0" TextWrapping="Wrap" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<telerik:RadWrapPanel VerticalAlignment="Center" />
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>
Imports GalaSoft.MvvmLight
Imports GalaSoft.MvvmLight.Command

Public Class DrawSelectorViewModel
Inherits ViewModelBase

Private _dataService As ILotteryDraw

Private _draws As IEnumerable(Of Draw)

Private _isBusy As Boolean

Public Property SelectionCommand As RelayCommand(Of Int32)

Public Property Draws As IEnumerable(Of Draw)
Get
Return _draws
End Get
Set(value As IEnumerable(Of Draw))
_draws = value
IsBusy = False
RaisePropertyChanged("Draws")
End Set
End Property

Public Property IsBusy As Boolean
Get
Return _isBusy
End Get
Set(value As Boolean)
_isBusy = value
RaisePropertyChanged("IsBusy")
End Set
End Property

Public Sub New(dataService As ILotteryDraw)
_dataService = dataService
SetupCommands()
LoadAvailableDraws()
End Sub

Private Sub SetupCommands()
SelectionCommand = New RelayCommand(Of Int32)(AddressOf ShowLotteryDraw)
End Sub

Private Sub LoadAvailableDraws()
IsBusy = True
_dataService.GetActiveDraws(Sub(e) Draws = e)
End Sub

Private Shared Sub ShowLotteryDraw(drawID As Int32)
Stop
End Sub

End Class

最佳答案

我相信它会尝试在 Draw 实例上触发 SelectionCommand。您需要使用 DataContextProxy 之类的东西或 relative source binding .

关于.net - MVVM 中继命令不会在 Silverlight RIA 应用程序中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6859875/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com