gpt4 book ai didi

Silverlight DataGrid.Celltemplate 绑定(bind)到 ViewModel

转载 作者:行者123 更新时间:2023-12-04 21:00:45 25 4
gpt4 key购买 nike

我正在实现 MVVC 模式,并且无法从数据网格中的 DataTemplate 中绑定(bind) View 模型中的属性。如果我在列中的 DataTemplate 之外有一个文本 block ,它工作正常(因为我直接引用 UserConrol 的数据上下文,即 VM)但是从 DataTemplate 内部它不会返回纯文本属性。但是,它将从迭代的 IEnumerable 项返回一个属性。

<UserControl xmlns:data="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"  
x:Class="Timesheet.Silverlight.Modules.Views.HistoryView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:Commands="clr-namespace:Microsoft.Practices.Composite.Presentation.Commands;assembly=Microsoft.Practices.Composite.Presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ViewModels="clr-namespace:Timesheet.Silverlight.Modules.ViewModels"
x:Name="View">
<StackPanel>
<TextBlock Text="{Binding Path=DataContext.testText, ElementName=View}" />
<data:DataGrid Height="280" Width="500" ItemsSource="{Binding TimeSlots}" AutoGenerateColumns="False" >
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Allocation Area" Binding="{Binding TimeAllocationArea.TimeAllocationName}" Width="200" />
<data:DataGridTextColumn Header="Start" Binding="{Binding StartTime}" Width="80" />
<data:DataGridTextColumn Header="End" Binding="{Binding Path=DataContext.testText, ElementName=View}" Width="80" />
<data:DataGridTemplateColumn Header="Modify" Width="200" >
<data:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=DataContext.testText, ElementName=View}" />
</StackPanel>
</DataTemplate>
</data:DataGridTemplateColumn.CellTemplate>
</data:DataGridTemplateColumn>
</data:DataGrid.Columns>
</data:DataGrid>
</StackPanel>
</UserControl>

我忽略的 DataTemplate 是否存在某种问题?请注意,“{Binding Path=DataContext.testText, ElementName=View}”适用于除 DataTemplate 中的元素之外的所有元素。 (请注意,我知道 DG 之外的第一个文本 block 不需要 ElementName 等,但我刚刚这样做是为了向自己证明它引用了正确的东西)

最佳答案

我不知道这是否适用于 SL,但您可以查看:

“Columns 集合只是 Datagrid 中的一个属性;这个集合不在逻辑(或可视)树中,因此 DataContext 没有被继承,这导致没有任何东西可以绑定(bind)。”

http://blogs.msdn.com/jaimer/archive/2008/11/22/forwarding-the-datagrid-s-datacontext-to-its-columns.aspx

关于Silverlight DataGrid.Celltemplate 绑定(bind)到 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1089650/

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