Datagrid组合框选择项值与文本框的绑定

马穆贝克

希望您一切顺利,并以Guru编码。

这是Datagrid绑定问题,这让我痛苦了两天。我问了其他与此问题有关的问题并解决了,但这是另一个问题。

我有RawVal结构和信号类(具有ObservableCollection)。

public struct RawVal
{
    public string name { get; set; }
    public int value { get; set; }
}

public class Signal
{
    public string Name { get; set; }
    public Int32 Value { get; set; }
   public ObservableCollection<RawVal> rawValue { get; set; }
}

现在XAML看起来像

<DataGrid ItemsSource="{Binding}" Name="grdSignal" Grid.Row="1" CanUserAddRows="False" AutoGenerateColumns="False" SelectionChanged="grdSignal_SelectionChanged_1">
     <DataGrid.Columns>
        <DataGridTextColumn Header="            Signal Name" Binding="{Binding Name}" Width="150"/>
           <DataGridTemplateColumn Header="   Physical Value " Width="100">
              <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                      <ComboBox ItemsSource="{Binding rawValue}" SelectedItem="Binding name"  DisplayMemberPath="name" Name="cmbVal" SelectedIndex="0" 
                             Visibility="{Binding Path=rawValue.Count, Converter={StaticResource ComboBoxItemCountToEnabledConverter}}"/>
                 </DataTemplate>
          </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
            <DataGridTemplateColumn Header="    Value " Width="100">
                <DataGridTemplateColumn.CellTemplate>
                   <DataTemplate>
                       <TextBox Text="{Binding }" />
                   </DataTemplate>
               </DataGridTemplateColumn.CellTemplate>
          </DataGridTemplateColumn>
        </DataGrid.Columns>
     </DataGrid> 

具有绑定的UI

问题是,当用户从“物理值组合”框中选择任何项目时,与此项目相关的值需要显示在“值”文本框中。

例如,Signal类中的RawVal包含这些值。

4 - Search Key Trigger
3 - Tailgate Key Trigger
2 - Un-Lock Key Trigger 
1 - Lock Key Trigger
0 - No Remote RQ Trigger

当用户选择“尾门按键触发器”时,文本框中将出现3。选择“无远程RQ触发器”时,为0。

欢迎任何建议和解决方案,谢谢。

哈里·普拉萨德(Hari Prasad)

您必须为INotifyPropertyChanged实现了事件Signal,并使用SelectedItem您的属性Combobox设置TextBoxcolumn的值

XAML代码:

<DataGrid ItemsSource="{Binding}" Name="grdSignal" Grid.Row="1" CanUserAddRows="False" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="            Signal Name" Binding="{Binding Name}" Width="150"/>
        <DataGridTemplateColumn Header="   Physical Value " Width="100">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <ComboBox  ItemsSource="{Binding rawValue, Mode=OneWay}" SelectedItem="{Binding SelectedRaValue, Mode=TwoWay,  UpdateSourceTrigger=PropertyChanged}"  DisplayMemberPath="name" Name="cmbVal"
                             Visibility="{Binding Path=rawValue.Count, Converter={StaticResource ComboBoxItemCountToEnabledConverter}}" />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
        <DataGridTemplateColumn Header="    Value " Width="100">
            <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBox Text="{Binding ComboValue}"  />
                </DataTemplate>
            </DataGridTemplateColumn.CellTemplate>
        </DataGridTemplateColumn>
    </DataGrid.Columns>
</DataGrid>

C#/代码落后

public class Signal: INotifyPropertyChanged 
{
    public string Name 
    {
        get;
        set;
    }
    public Int32 Value 
    {
        get;
        set;
    }
    private ObservableCollection < RawVal > rawValue1;
    public ObservableCollection < RawVal > rawValue 
    {
        get 
        {
            return rawValue1;
        }
        set 
        {
            rawValue1 = value;
            OnPropertyChanged("rawValue");
            if (value != null && value.Count > 0) 
            {
                SelectedRaValue = value.First();
            }
        }
    }

    private RawVal selectedRaValue;
    public RawVal SelectedRaValue 
    {
        get 
        {
            return selectedRaValue;
        }
        set 
        {
            selectedRaValue = value;
            OnPropertyChanged("SelectedRaValue");
            ComboValue = value.name;
            OnPropertyChanged("ComboValue");
        }
    }

    public string ComboValue 
    {
        get;
        set;
    }

    #region Implementation of INotifyPropertyChanged

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName) 
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }

    #endregion
}

现在您可以设置 DataContext

 List < Signal > collection = new List < Signal > ();
 collection.AddRange((new[] 
 {
    new Signal
    {
        Name = "Hello",
        Value = 1,
        rawValue = new ObservableCollection < RawVal > ((new[] {
            new RawVal { name = "A", value = 1}, 
            new RawVal {name = "B", value = 1}
        }).ToList()),
    },
    new Signal {
        Name = "World",
        Value = 2,
        rawValue = new ObservableCollection < RawVal > ((new[] {
            new RawVal {name = "A", value = 1}, 
            new RawVal {name = "B", value = 1}
        }).ToList()),
    }
 }).ToList());

 this.DataContext = collection;

希望这可以帮助 !!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

根据python中组合框选择的值在文本框中显示特定值

来自分类Dev

如何在文本框C#中显示组合框选择的值?

来自分类Dev

Excel VBA:基于“组合框选择”然后“求和”将值添加到文本框

来自分类Dev

WPF-如何根据组合框选择获取文本框值

来自分类Dev

文本框启用禁用组合框选择

来自分类Dev

如何使用C#将组合框选择的值添加到Crystal Report文本框

来自分类Dev

VBA 用户表单根据 2 个组合框选择使用单元格值填充文本框

来自分类Dev

C#使用组合框选择来预填充文本框

来自分类Dev

显示从文本框 C# 中的组合框选择的 XML 数据

来自分类Dev

从列表视图中选择项目后,从数组更改文本框文本值

来自分类Dev

从组合框中选择项目时,将新数据添加到文本框中

来自分类Dev

从Datagrid(WPF)绑定文本框

来自分类Dev

无法从组合框选择项目

来自分类Dev

如何在Javascript / Jquery中添加表格行时更改组合框选择上的文本框

来自分类Dev

如何根据excel中用户窗体上的组合框选择添加标签和文本框

来自分类Dev

将下拉框选择附加到文本框

来自分类Dev

更改组合框文本,但未选择项目

来自分类Dev

从文本框值填充datagrid行?

来自分类Dev

根据文本框输入选择组合框中的值

来自分类Dev

选择多个组合框的值时如何显示文本框

来自分类Dev

将选定的 DataGrid 行绑定到文本框

来自分类Dev

如何根据用户表单组合框选择查询单元格中的数据并将数据复制到用户表单文本框中

来自分类Dev

在选择中显示文本框的值

来自分类Dev

列表框选择变为文本框选择

来自分类Dev

JavaFX组合框上的“无选择项”?

来自分类Dev

使用微调框选择项填充TextView-Android

来自分类Dev

更改对话框选择项的颜色

来自分类Dev

使用复选框选择项Angular JS

来自分类Dev

更改对话框选择项的颜色

Related 相关文章

  1. 1

    根据python中组合框选择的值在文本框中显示特定值

  2. 2

    如何在文本框C#中显示组合框选择的值?

  3. 3

    Excel VBA:基于“组合框选择”然后“求和”将值添加到文本框

  4. 4

    WPF-如何根据组合框选择获取文本框值

  5. 5

    文本框启用禁用组合框选择

  6. 6

    如何使用C#将组合框选择的值添加到Crystal Report文本框

  7. 7

    VBA 用户表单根据 2 个组合框选择使用单元格值填充文本框

  8. 8

    C#使用组合框选择来预填充文本框

  9. 9

    显示从文本框 C# 中的组合框选择的 XML 数据

  10. 10

    从列表视图中选择项目后,从数组更改文本框文本值

  11. 11

    从组合框中选择项目时,将新数据添加到文本框中

  12. 12

    从Datagrid(WPF)绑定文本框

  13. 13

    无法从组合框选择项目

  14. 14

    如何在Javascript / Jquery中添加表格行时更改组合框选择上的文本框

  15. 15

    如何根据excel中用户窗体上的组合框选择添加标签和文本框

  16. 16

    将下拉框选择附加到文本框

  17. 17

    更改组合框文本,但未选择项目

  18. 18

    从文本框值填充datagrid行?

  19. 19

    根据文本框输入选择组合框中的值

  20. 20

    选择多个组合框的值时如何显示文本框

  21. 21

    将选定的 DataGrid 行绑定到文本框

  22. 22

    如何根据用户表单组合框选择查询单元格中的数据并将数据复制到用户表单文本框中

  23. 23

    在选择中显示文本框的值

  24. 24

    列表框选择变为文本框选择

  25. 25

    JavaFX组合框上的“无选择项”?

  26. 26

    使用微调框选择项填充TextView-Android

  27. 27

    更改对话框选择项的颜色

  28. 28

    使用复选框选择项Angular JS

  29. 29

    更改对话框选择项的颜色

热门标签

归档