【发布时间】:2021-02-04 17:31:23
【问题描述】:
我正在构建一个 WPF 应用程序并尝试尽可能地坚持 MVVM 模式。我有一个列表框,里面有一个数据模板,其中包含TextBlock 和Button。如果单击数据模板中的按钮,它不会选择整行,所以我不知道它属于哪一行。我想抓取整个对象并将其绑定到视图模型中的属性。我可以得到一些帮助或解决方法吗?请坚持 mvvm 模式。
带有项目模板的列表框
<telerik:RadListBox Width="200" Height="150" HorizontalAlignment="Left" Margin="10" ItemsSource="{Binding ListOfSupplierInvoices}"
SelectedItem="{Binding SelectedSupplierInvoice, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}">
<telerik:RadListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Stretch" >
<TextBlock Text="{Binding InvoiceNumber}" HorizontalAlignment="Left" Margin="5" ></TextBlock>
<telerik:RadButton Height="20" >
<telerik:RadButton.Content>
<Image Source="/ImageResources/Misc/delete.png" Stretch="Fill" />
</telerik:RadButton.Content>
</telerik:RadButton>
</StackPanel>
</DataTemplate>
</telerik:RadListBox.ItemTemplate>
</telerik:RadListBox>
它在视图中的外观:
【问题讨论】:
-
Telerik
RadButton是否包含Command依赖属性?如果是这样,那么您可以创建一个从您的视图模型运行的命令绑定,并且当该方法运行时,只需更新您的SelectedSupplierInvoice视图模型属性。您在 xaml 中将其设置为 TwoWay,因此它应该更新 RadListBox 的 SelectedItem。这将确保维护 MVVM。
标签: c# wpf mvvm telerik datatemplate