【问题标题】:WPF Datagrid DataTemplate ComboBo Not Capturing Change in ViewmodelWPF Datagrid DataTemplate ComboBo 未捕获 Viewmodel 中的更改
【发布时间】:2014-07-08 16:56:49
【问题描述】:

到目前为止,我已经从 SO 那里得到了很多帮助,但我已经陷入了困境。我可以使它适用于单个组合框,但是当我在 DataGridTemplate 中执行此操作时,它并没有发挥作用。我希望 FXCItem 属性能够获取从组合框中选择的任何值,但它总是返回 null。此外,我的 ConfigItems 属性中的“SET”方法根本没有被抛出。我在这里想念什么?提前谢谢!

ViewModel & Model(这是在按钮“点击”事件中填充的):

   class ConfigViewModel : ViewModelEntity
{

    public Settings Settings { get; set; }
    public List<String> FileTypes { get; set; }
    public List<String> Delimiters { get; set; }
    public List<string> FXCFields { get; set; }

    protected ObservableCollection<ConfigItem> _ConfigItems = new ObservableCollection<ConfigItem>();
    public ObservableCollection<ConfigItem> ConfigItems
    {
        get { return _ConfigItems; }
        set
        {
            if (_ConfigItems != value)
            {
                _ConfigItems = value;
                NotifyPropertyChanged("ConfigItems");
            }

        }
    }}

class ConfigItem
{
    public string InputField { get; set; }
    public string FXCField { get; set; }

    public ConfigItem(string InputFieldName)
    {
        this.InputField = InputFieldName;
    }
}

XAML:

<DataGrid x:Name="dgConfig" HorizontalAlignment="Left" Margin="40.66,98,0,0" VerticalAlignment="Top" Height="300.486" Width="323" AutoGenerateColumns="False" ItemsSource="{Binding ConfigItems}">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding InputField}" Header="Input Fields"/>
        <DataGridTemplateColumn Header="FXC Fields">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox ItemsSource="{Binding Path=DataContext.FXCFields, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
                        SelectedItem="{Binding Path=FXCItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                        />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
            <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                    <ComboBox ItemsSource="{Binding Path=DataContext.FXCFields, RelativeSource={RelativeSource AncestorType={x:Type Window}}}"
                        SelectedItem="{Binding Path=FXCItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
                        />
                </DataTemplate>
            </DataGridTemplateColumn.CellEditingTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

【问题讨论】:

  • 你在哪里定义了 FXCItem ?
  • @RAJ,你成功了!非常感谢!我的绑定属性命名错误!我已经看这个太久了,我无法从树上看到森林!非常感谢!

标签: c# wpf xaml mvvm datagrid


【解决方案1】:

试试

NotifyPropertyChanged("FXCFields");

【讨论】:

  • 我刚才试过了,没有运气。根本没有调用 ConfigItems 的 Set 方法。我扩展了 FXCFields 属性以实现 NotifyProperyhChanged on Set 也没有运气。
猜你喜欢
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 2012-07-07
  • 2012-05-04
相关资源
最近更新 更多