gpt4 book ai didi

DataGridTemplateColumn 中的 WPF 数据绑定(bind) ComboBox

转载 作者:行者123 更新时间:2023-12-04 22:25:03 24 4
gpt4 key购买 nike

我有一个 DataGrid,我想填充一个包含 ComboBox 的列,该列具有基于行的元素的动态 ItemsSource。我的组合框显示正确,并且列表中填充了正确的元素列表,就像从 AvailableLogFileProcessTypes 属性(一个 ReadOnlyCollection)中提取的一样。但是,当用户在组合框中进行选择时,LogFileProcessType 属性未设置为选择。

数据:

Property LogFileDirectories, IEnumerable<LogFileData>,
LogFileData:
public LogFileProcessType LogFileProcessType{get;set;}
public ReadOnlyCollection<LogFileProcessType> AvailableLogFileProcessTypes { get; set; }

该属性当前有一个支持字段,并且没有命中 set 属性中的断点,所以我知道它已本地化到绑定(bind)设置。我的 XAML 有什么问题导致无法设置该属性?

如您所见,我已尝试在 CellEditingTemplate 和 CellTemplate 中同时设置 SelectedValue 和 SelectedItem。我不确定哪一个是合适的。

 <DataGrid AutoGenerateColumns="False" ItemsSource="{Binding Path=LogFileDirectories, UpdateSourceTrigger=PropertyChanged}"
HeadersVisibility="Column" CanUserReorderColumns="False" CanUserAddRows="False" Margin="0,0,0,35" Grid.RowSpan="3">
<DataGrid.Columns>
<DataGridCheckBoxColumn Header="Processed" Binding="{Binding Path=IsProcessingComplete, Mode=OneWay}" Width="70" IsReadOnly="True" />
<DataGridTemplateColumn Header="template">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding Path=LogFileProcessType, Mode=TwoWay}"
SelectedItem="{Binding Path=LogFileProcessType, Mode=TwoWay}"
ItemsSource="{Binding Path=AvailableLogFileProcessTypes}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding Path=LogFileProcessType, Mode=TwoWay}"
SelectedItem="{Binding Path=LogFileProcessType, Mode=TwoWay}"
ItemsSource="{Binding Path=AvailableLogFileProcessTypes}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>

最佳答案

请参阅大马士革对思维过程的回应。

需要在 CellTemplate/CelLEditTemplate 上指定 UpdateSourceTrigger。这会触发属性更改。

 <DataGridTemplateColumn Header="template">
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding Path=LogFileProcessType, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding Path=AvailableLogFileProcessTypes}"/>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox SelectedValue="{Binding Path=LogFileProcessType, UpdateSourceTrigger=PropertyChanged}"
ItemsSource="{Binding Path=AvailableLogFileProcessTypes}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

关于DataGridTemplateColumn 中的 WPF 数据绑定(bind) ComboBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6203554/

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